Integrate
The TestMathFunctions unit test in the preceding section is a bit of a cheat because it combines the tests for two procedures: Inverse and CubeRoot. In general, unit tests and procedures have a one-to-one correspondence to make it easier to locate problems when they occur. Also, unit tests are easier to use if they don’t display message boxes, because that requires you to manually click through the test.
For those reasons, I generally follow these conventions when writing unit tests:
Return a string indicating pass/fail from each test.
Where the results aren’t pass/fail, return the result of the operation.
Call the unit tests from a
TestxxxMainprocedure and display the results in the Immediate window usingDebug.Print.
The following code shows unit tests for the QuickRead and QuickWrite procedures from Chapter 3 written with those conventions in mind:
Const fpathtest = "c:\temp.txt" Sub TestFilesMain( ) Debug.Print TestQuickWrite Debug.Print TestQuickRead End Sub Private Function TestQuickWrite( ) As String Dim s As String Dim result As String result = "failed" s = "This is some sample text." If Files.QuickWrite(s, fpathtest, True) Then result = "passed" TestQuickWrite = "TestQuickWrite " & result End Function Private Function TestQuickRead( ) As String Dim s1 As String, s2 As String Dim result As String result = "failed" s1 = "This is some sample text." s2 = Files.QuickRead(fpathtest) If s1 = s2 Then result = "passed" TestQuickRead = "TestQuickRead " & ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access