면책 조항 : 나는 Rubberduck의 GitHub의 저장소를 소유, 나는이 프로젝트에 포함 된 DEVS 중 하나입니다.
Rubberduck이 활발히 개발 중입니다. 그래도 VBA에 대한 단위 테스트 도구에 비해 훨씬 더,하지만 꽤 잘 작동하고 당신이 어떤 상용구없이 거의 VBA 단위 테스트를 작성할 수 있습니다 : 다음
'@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
그리고 당신은 탐색과 시험 방법을 실행에 도착 도킹 된 툴바 윈도우에 arrange-act-assert 메소드 스텁을 신속하게 추가 할 수있는 메뉴를 제공하고 AssertClass
도 런타임에 바인딩 할 수 있으므로 개발시 이외에 Rubberduck를 배치 할 필요가 없습니다 환경은 코드를 컴파일 할 수 있도록 유지합니다.
Rubberduck의 GitHub의 저장소에 unit testing wiki page
은 그것을 사용하는 방법에 대한 설명이 거의 모든 것을 설명합니다.
최신 2.1 시험판 버전
는 일반적으로 문자로 표준 라이브러리를 설정하여, 단위 테스트를 방해하는 표준 라이브러리 호출의 수를 납치하는 데 사용할 수있는 "가짜"프레임 워크의 시작을 포함
'@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
기여가 더 많은 기능을 환영합니다 이상입니다 충당하기 위해 그 Fakes
API를 확장 : 지정된 예를 들어, Rubberduck 단위 테스트의 맥락에서 MsgBox
호출을 실행하면 설치가 동작하도록 할 수있다 "테스트 가짜". 커버 FileSystemObject
호출은 특히 유용 할 것입니다.
관심있는 사용자 : http://stackoverflow.com/questions/1792188/how-to-setup-a-unit-test-in-vba-excel-macro – Fionnuala
감사합니다. –