-
Notifications
You must be signed in to change notification settings - Fork 301
Unit Testing
The Test Explorer allows browsing/finding, running, and adding unit tests to the active VBProject:
##QuickStart
The Refresh command synchronizes the test methods with the code in the IDE, but if test methods are added from within the Text Explorer then the new tests will appear automatically.
The Run menu makes running the tests as convenient as in the .NET versions of Visual Studio:
"Selected Tests" refer to the selection in the grid, not in the IDE.
The Add menu makes it easy to add new tests:
Adding a Test Module ensures the active VBProject has a reference to the add-in's type library, then adds a new standard code module with this content:
'@TestModule
Option Explicit
Private Assert As New Rubberduck.AssertClass
Adding a Test Method adds this template snippet at the end of the active test module:
'@TestMethod
Public Sub TestMethod1() 'TODO: Rename test
On Error GoTo TestFail
'Arrange
'Act
'Assert
Assert.Inconclusive
TestExit:
Exit Sub
TestFail:
If Err.Number <> 0 Then
Assert.Fail "Test raised an error: " & Err.Description
End If
Resume TestExit
End Sub
Adding a Test Method (expected error) adds this template snippet at the end of the active test module:
'@TestMethod
Public Sub TestMethod2() 'TODO: Rename test
Const ExpectedError As Long = 0 'TODO: Change to expected error number
On Error GoTo TestFail
'Arrange
'Act
'Assert
Assert.Fail "Expected error was not raised."
TestExit:
Exit Sub
TestFail:
Assert.AreEqual ExpectedError, Err.Number
Resume TestExit
End Sub
The number at the end of the generated method name depends on the number of test methods in the test module.
The AssertClass type exposes the following members.
Name | Description |
---|---|
AreEqual |
Verifies that two specified objects are equal. The assertion fails if the objects are not equal.
|
AreNotEqual |
Verifies that two specified objects are not equal. The assertion fails if the objects are equal.
|
AreNotSame |
Verifies that two specified object variables refer to different objects. The assertion fails if they refer to the same object.
|
AreSame |
Verifies that two specified object variables refer to the same object. The assertion fails if they refer to different objects.
|
Equals |
Determines whether the specified Object is equal to the current Object
|
Fail |
Fails the assertion without checking any conditions.
|
Inconclusive |
Indicates that the assertion cannot be verified.
|
IsFalse |
Verifies that the specified condition is false. The assertion fails if the condition is true.
|
IsNothing |
Verifies that the specified object is Nothing. The assertion fails if it is not Nothing.
|
IsNotNothing |
Verifies that the specified object is not Nothing. The assertion fails if it is Nothing.
|
IsTrue |
Verifies that the specified condition is true. The assertion fails if the condition is false.
|
##Discovery
Rubberduck will only attempt to find test methods in standard code modules (.bas) that have a '@TestModule
marker comment.
Test methods must be Public
, parameterless procedures (Sub
). Public parameterless procedures in a test module will only be considered as test methods with either:
- Method name starting with
Test
, likeTestMethod1
- Signature is immediately preceded by a
'@TestMethod
marker comment; this allows for more flexibility in naming.
rubberduckvba.com
© 2014-2021 Rubberduck project contributors
- Contributing
- Build process
- Version bump
- Architecture Overview
- IoC Container
- Parser State
- The Parsing Process
- How to view parse tree
- UI Design Guidelines
- Strategies for managing COM object lifetime and release
- COM Registration
- Internal Codebase Analysis
- Projects & Workflow
- Adding other Host Applications
- Inspections XML-Doc
-
VBE Events