VBA-TDD - VBAでもテスト駆動開発を!
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)です。