Tuyên bố từ chối: Tôi sở hữu kho lưu trữ GitHub của Rubberduck và tôi là một trong những người tham gia dự án.
Rubberduck đang được phát triển tích cực. Đó là nhiều hơn một công cụ kiểm tra đơn vị cho VBA Mặc dù vậy, nhưng nó hoạt động khá tốt và cho phép bạn viết bài kiểm tra đơn vị VBA khá nhiều mà không cần bất kỳ soạn sẵn:
'@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
Và sau đó bạn có thể điều hướng và chạy các phương pháp thử nghiệm của bạn trong cửa sổ công cụ được gắn trên dock cũng cung cấp cho bạn các menu để nhanh chóng thêm sắp xếp-hành động-assert phương pháp sơ khai và AssertClass
cũng có thể bị ràng buộc muộn, vì vậy bạn không phải lo lắng về việc triển khai Rubberduck ở bất kỳ đâu ngoài sự phát triển của bạn môi trường chỉ để giữ cho mã có thể biên dịch được.
unit testing wiki page trên kho lưu trữ GitHub của Rubberduck giải thích khá nhiều điều cần giải thích về việc sử dụng nó.
Mới nhất 2.1 phiên bản trước khi phát hành bao gồm sự khởi đầu của một "hàng giả" khuôn khổ có thể được sử dụng để chiếm quyền điều khiển một số lượng cuộc gọi thư viện chuẩn mà thông thường sẽ gây trở ngại cho các bài kiểm tra đơn vị, bởi theo nghĩa đen biến thư viện tiêu chuẩn vào "hàng giả kiểm tra" có thể được thiết lập để hành xử theo quy định khi thực hiện trong bối cảnh của một thử nghiệm đơn vị Rubberduck, ví dụ MsgBox
cuộc gọi:
'@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
đóng góp để mở rộng mà Fakes
API để trang trải nhiều chức năng hơn chào đón. Bao gồm FileSystemObject
lời gọi sẽ đặc biệt hữu ích.
Nguồn
2015-03-01 20:32:04
Có thể quan tâm: http://stackoverflow.com/questions/1792188/how-to-setup-a-unit-test-in-vba-excel-macro – Fionnuala
Cảm ơn, tôi sẽ xem xét. –