如何编写验证子程序的单元测试?

时间:2010-12-20 20:32:17

标签: vb.net unit-testing

Public Class Class1

Public OutPut As String = ""
Public StoreThis As String = ""

Public Function GiveOutPut(ByVal s As String) As String

    OutPut = s + " OutPut"

    If s = "S" Then
        CallThis()
    End If

    Return OutPut

End Function

Public Sub CallThis()

    ///pretend something useful is going on here

End Sub

End Class

当然这个例子非常弱,但我怎么能写一个测试方法来证明每次输入参数s =“S”时都会调用CallThis()?

5 个答案:

答案 0 :(得分:3)

如果在CallThis中发生了有用的事情,您可以检测测试代码中的副作用。

例如,如果变量通过此函数以特定方式更改值,则可以在调用之前和之后测试其值。

答案 1 :(得分:1)

不确定这是最好的方法,但我会设置一个类级别的布尔变量,第二个子例程将设置,然后在测试中检查该变量。像这样:

Public Class Class1  

Public OutPut As String = "" 
Public StoreThis As String = "" 
Public Success as Boolean = False

   Public Function GiveOutPut(ByVal s As String) As String      
       OutPut = s + " OutPut"      
       If s = "S" Then
         CallThis()
       End If
       Return OutPut
   End Function

   Public Sub CallThis()
     ///pretend something useful is going on here
     Success = True
   End Sub

End Class

答案 2 :(得分:1)

NCover或TFS Code Coverage等工具将分析您的代码的哪些位被调用。您还可以在测试中使用debug.writeline作为输出。

答案 3 :(得分:0)

你需要让CallThis产生一些你可以测试的外部效果。如果你自己编写代码,那么使用变量作用域,例如:在类中,在调用CallThis方法之前,将此变量设置为false,然后在CallThis方法中,将其设置为true - 然后将其设置为在测试中变为true。

答案 4 :(得分:0)

使用隔离框架,例如Rhino Mocks或Moq