目次 | 関連するページ |
@igeta氏作のAssert.basを利用して
VBAでユニットテストをする方法についてまとめてみた。
以下サンプルコードを記載していますが、
ユニットテストの手順を説明したものではないです。
「TDDするなら、Testクラスを作るのが先だろう」とか、そんなんはええねん。
Assert.bas使ってユニットテストする場合、
こんな形になりますよーっていうのがわかればええねん。
ユニットテストしようとする Class1 はこんなかんじ。
Option Explicit Public Function Add(a, b) Add = a + b End Function Public Function Pow(a, b) Dim out: out = 1 Dim i: For i = 1 To b out = out * a Next Pow = out End Function
んで、Class1のテストクラスであるClass1_Testはこんなかんじ。
Option Explicit Dim class1 As New class1 Public Sub Add_正常系_引数数値_Test() Call Assert.AreEqualVal(class1.Add(1, 2), 3) End Sub Public Sub Add_正常系_引数文字列_Test() Call Assert.AreEqualVal(class1.Add("a", "b"), "ab") End Sub Public Sub Pow_正常系_引数正_Test() Call Assert.AreEqualVal(class1.Pow(2, 3), 8) End Sub Public Sub Pow_正常系_引数負_Test() Call Assert.AreEqualVal(class1.Pow(-2, 3), -8) End Sub
あとは、Module1にこんなコードを書いて実行すればOK
Option Explicit Sub test() Assert.RunTestClass New Class1Test End Sub
実行結果はこんな感じ
クラスに関しては、以上のような感じにユニットテストができる。
(モジュール内のプロシージャに関しては無理っぽい?)