VBA…誰もが一度は経験している言語かと思います。ごくごく小さなツールを書くのには最適ですが、少し大きくなったり、中長期的にメンテナンスしなければならないとなったら嫌になるのではないでしょうか。 理由としてテストする仕組みがなく、トライ&エラーで作り上げるところに一因があるかと思います。そこで使ってみたいのがVBA-TDDです。

VBA-TDDの使い方

実行例です。イミディエイトウィンドウに結果が表示されています。

Function Specs() As SpecSuite
    Set Specs = New SpecSuite
    Specs.Description = "Add"

    ' Report results to the Immediate Window
    ' (ctrl + g or View > Immediate Window)
    Dim Reporter As New ImmediateReporter
    Reporter.ListenTo Specs

    ' Describe the desired behavior
    With Specs.It("should add two numbers")
        ' Test the desired behavior
        .Expect(Add(2, 2)).ToEqual 4
        .Expect(Add(3, -1)).ToEqual 2
        .Expect(Add(-1, -2)).ToEqual -3
    End With

    With Specs.It("should add any number of numbers")
        .Expect(Add(1, 2, 3)).ToEqual 6
        .Expect(Add(1, 2, 3, 4)).ToEqual 10
    End With
End Sub

Public Function Add(ParamArray Values() As Variant) As Double
    Dim i As Integer
    Add = 0
    
    For i = LBound(Values) To UBound(Values)
        Add = Add + Values(i)
    Next i
End Function

結果です。

エラーを修正すればちゃんと通りました。

VBA-TDDを使えばVBAのコードに対するユニットテストが実現できるようになります。テストしやすいコードを書くのはメンテナンス性の意味でも重要ですし、テストを行えば品質も向上するでしょう。

VBA-TDDはVBA製のオープンソース・ソフトウェア(MIT License)です。

VBA-tools/VBA-TDD: Test-Driven Development for VBA