VB.NET 単体テストの使い方

(Visual Studio 2012 版)

投稿日 2016/02/06

[Home] | VB.NET インデックス

概要

単体テストとはオブジェクト指向言語の場合、ふつうはクラスのテストを意味します。Visual Studio ではクラス単体のテストを自動的に行うための機能が実装されています。この機能を利用するためには、テストプロジェクトを作成してテストメソッドを実装する必要があります。

テストメソッドではテスト対象のクラスをインスタンス化して、メソッドを呼び出してその振る舞いを検証することでテストを行います。これをブラックボックステストと言います。


テストプロジェクトを追加するには

テスト対象のクラスを含むソリューションにテストプロジェクトを追加するには、ソリューションエクスプローラでソリューションを選択して、「追加 / 新しいプロジェクト」メニューを実行して新しいプロジェクトダイアログを開きます。そこで、「テスト / 単体テストプロジェクト」を選び名前を適切に変更して OK ボタンをクリックします。

これによりテストプロジェクトがソリューションに追加されます。下の画像は UnitTestProject1 を追加した例です。


UnitTest1.vb には空のテストメソッドが入っており下のようになっています。

Imports System.Text
Imports Microsoft.VisualStudio.TestTools.UnitTesting

<TestClass()> Public Class UnitTest1

    <TestMethod()> Public Sub TestMethod1()
    End Sub

End Class

この状態で「テスト / すべてのテスト」メニューを実行してみます。テストエクスプローラが表示されて、このテストメソッドが実行されます。何も行わないのでテストは正常終了して、緑のアイコンがテストメソッドに表示されるはずです。

テストを行うにはこのテストメソッドにテストコードを追加します。そして、テスト項目が多い時は、それなりの長さになります。

テストコードは 1.ある条件でメソッドを呼び出す。2.メソッドの実行結果を Assert クラスのメソッドで検証するというコードの繰り返しになります。場合によっては、テスト前にテスト用のファイルを用意したりデータを作成したりします。テスト結果も関数値だけではなく、もしファイルを作成するメソッドなら作成されたファイルの検証などが必要になります。


テストメソッドのサンプル

この例では ClassLibrary プロジェクトに CsvClass.vb と IniFile.vb というファイルが含まれており、それぞれ CsvClass と IniFile というクラスを実装しています。

単体テストはクラス単位で行うので、テストメソッドもそれぞれ TestMethodCsv とTestMethodIniFile というメソッドで行っています。

Imports System.Text
Imports Microsoft.VisualStudio.TestTools.UnitTesting
Imports ClassLibrary
Imports System.IO

<TestClass()> Public Class UnitTest1
    ''' <summary>
    ''' CsvClass のテスト
    ''' </summary>
    ''' <remarks></remarks>
    <TestMethod()> Public Sub TestMethodCsv()
        Dim file1 As String = "C:\temp\csvtest.csv"
        Dim file2 As String = "C:\temp\csvtest2.csv"
        Dim csv = New CsvClass
        csv.Add({"1", "2", "3"})
        csv.Add({"10", "20", "30"})
        csv.Add({"A", "2B", "CA"})
        csv.Save(file1)
        csv.Read(file1, True)
        Dim row As String() = csv(0)
        Assert.AreEqual(row(0), "1")
        csv.Save(file2)
        Assert.IsTrue(File.Exists(file2))
    End Sub

    ''' <summary>
    ''' IniFile のテスト
    ''' </summary>
    ''' <remarks></remarks>
    <TestMethod()> Public Sub TestMethodIniFile()
        Dim file1 As String = "C:\temp\IniFile.ini"
        Dim file2 As String = "C:\temp\IniFile2.ini"
        File.WriteAllLines(file1, {"# Comment", "X1 = 0", "Y1 =5", "", " X2= 912", "Y2= 67 "})
        Dim ini As IniFile = New IniFile()
        ini.Read(file1)
        Assert.AreEqual(ini("X1"), "0")
        Assert.AreEqual(ini("Y1"), "5")
        Assert.AreEqual(ini("X2"), "912")
        Assert.AreEqual(ini("Y2"), "67")
        ini.Save(file2)
    End Sub
End Class

「テスト / すべてのテスト」メニューを実行すると、テストエクスプローラには次のように表示されます。

もしテスト対象(あるいはテストメソッド)にバグがあると赤のアイコンが表示されるので、バグを修正後、そのメソッドを選択してテストを行い、緑になるまで繰り返します。

 

 


 

 開設 2014年12月   著作権 2014-2015 bonk.red  連絡先: こちらからメッセージを送ってください。

 このページの先頭へ..