Zastrzeżone: Jestem właścicielem GitHub repozytorium Rubberduck, a ja jestem jednym z deweloperów biorących udział w projekcie.
Rubberduck jest w trakcie aktywnego rozwoju. To znacznie więcej niż narzędzie do testów jednostkowych dla VBA chociaż, ale działa całkiem dobrze i pozwala pisać testy jednostkowe VBA prawie bez boilerplate:
'@TestModule
Private Assert As New Rubberduck.AssertClass
'@TestMethod
Public Sub TestMethod1()
Assert.Inconclusive "Test method is not written yet."
End Sub
'@TestMethod
Public Sub AnotherTestMethod()
Assert.IsTrue False, "Something's wrong?"
End Sub
a następnie dostać się do poruszania się i uruchomić swoje metody badań w zadokowanym oknie narzędziowym, które daje ci również menu do szybkiego dodawania kodów pośredniczących przy rozmieszczaniu-aktywowaniu, a AssertClass
może być również późno związany, więc nie musisz się martwić o wdrażanie Rubberduck nigdzie indziej niż w twoim rozwoju środowisko tylko po to, aby kod był kompilowany.
unit testing wiki page na GitHub repozytorium Rubberduck wyjaśnia prawie wszystko, co jest do wyjaśnienia na temat korzystania z niej.
najnowszej 2.1 wersjach przedpremierowych obejmuje początki „podróbki” ram, które mogą być wykorzystane do przejęcia szereg standardowych wywołań bibliotecznych, które normalnie zakłóca testów jednostkowych, przez dosłownie toczenia standardowej biblioteki do „podróbki test”, który może być ustawiony tak, aby zachowywać się jak określono, gdy wykonywane w ramach testów jednostkowych Rubberduck np MsgBox
połączeń:
'@TestMethod
Public Sub TestMethod1()
On Error GoTo TestFail
Fakes.MsgBox.Returns 42 ' MsgBox function will return 42
'here you'd invoke the procedure you want to test
Debug.Print MsgBox("This MsgBox isn't going to pop up!", vbOkOnly, "Rubberduck") 'prints 42
With Fakes.MsgBox.Verify ' Test will pass if MsgBox was invoked as specified
.Parameter "prompt", "This MsgBox isn't going to pop up!"
.Parameter "buttons", vbOkOnly
.Parameter "title", "Rubberduck"
End With
TestExit:
Exit Sub
TestFail:
Assert.Fail "Test raised an error: #" & Err.Number & " - " & Err.Description
End Sub
treści, aby rozwinąć tę Fakes
API do pokrycia więcej funkcji są bardziej niż mile widziane. Szczególnie przydatne byłoby wywoływanie wywołań FileSystemObject
.
Może zainteresować: http://stackoverflow.com/questions/1792188/how-to-set-a-itit-test-in-vba-excel-macro – Fionnuala
Dzięki, przyjrzę się. –