自動テストツール NUnit 2/3
実際に動作するプログラム(プロジェクト:NUnit)。
構成は自動テストツール① NUnit 1/3参照
Public Class frmNUnit
Private _value1 As Integer
Private _value2 As Integer
Private _answer As Integer
Public Property value1 As Integer
Get
Return _value1
End Get
Set(value As Integer)
_value1 = value
End Set
End Property
Public Property value2 As Integer
Get
Return _value1
End Get
Set(value As Integer)
_value2 = value
End Set
End Property
Public Property answer As Integer
Get
Return _answer
End Get
Set(value As Integer)
_answer = value
End Set
End Property
Public Sub Kake()
_answer = _value1 * _value1
End Sub
End Class
テスト用プログラム(プロジェクト:TestOnly)
Imports NUnit.Framework
ツール「NUnit」は↓TestFixture属性を持つクラスを実行する仕組み
<TestFixture()> _
Public Class ClassTestOnly
’テスト単位にTest属性を設ける
’①1つの値でのみテスト
<Test()> _
Public Sub Test1()
’NUnitを動かす。
’NUnit.frmNUnitクラスをインスタンス化&値を渡し、掛け算メソッドを実行。
Dim target As New NUnit.frmNUnit()
target.value1 = 10
target.value2 = 20
Call target.Kake()
期待と実際の値を比較する関数。
Assert.AreEqual(expected:=200, _ ’期待値
actual:=target.answer, _ ’実際の値
message:=”失敗”) ’期待値≠実際の値の場合のメッセージ
End Sub
’②以下、異なる値で連続テスト。
’TestCase属性を持たせるとそれぞれの引数がTest2に渡されてテストされる。
<Test()> _
<TestCase(1, 1, 1)> _
<TestCase(2, 2, 4)> _
<TestCase(3, 3, 9)> _
<TestCase(4, 4, 16)> _
<TestCase(5, 5, 25)> _
<TestCase(6, 6, 36)> _
<TestCase(7, 7, 59)> _ ’←7×7=59の時テスト成功…と定義している。
<TestCase(8, 8, 64)> _
<TestCase(9, 9, 81)> _
Public Sub Test2(ByVal prm1 As Integer, _
ByVal prm2 As Integer, _
ByVal prmExpected As Integer)
Dim target As New NUnit.frmNUnit()
target.value1 = prm1
target.value2 = prm1
Call target.Kake()
’ target.answer = prmExpected の時テスト成功
Assert.AreEqual(expected:=prmExpected, _
actual:=target.answer, _
message:=”掛算失敗”)
End Sub
End Class
Test2のテスト結果。7×7=59のテストだけ失敗している。