自動テストツール① 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のテストだけ失敗している。
NUnit_テスト失敗

コメントを残す

メールアドレスが公開されることはありません。