如何在Vb.Net中为单例类实例生成测试方法

时间:2013-07-30 07:08:34

标签: .net vb.net singleton tdd

以下是我的代码,我正在使用Visual Studio 2008中提供的测试项目

Public Class Calculator
    Public Shared objCalculator As Calculator = Nothing
    Private Sub New()

    End Sub
    Public Shared Function GetInstance() As Calculator
        If objCalculator Is Nothing Then
            objCalculator = New Calculator
        End If
        Return objCalculator
    End Function
End Class

测试方法

 '''<summary>
    '''A test for GetInstance
    '''</summary>
    <TestMethod()> _
    Public Sub GetInstanceTest()
        Dim expected As Calculator = Nothing
        Dim actual As Calculator
        actual = Calculator.GetInstance
        Assert.AreNotEqual(expected, actual)
        Assert.Inconclusive("Verify the correctness of this test method.")
    End Sub

我是否按照正确的方法测试Singleton类。 我正在使用 Assert.AreNotEqual(期望,实际)这个,

1 个答案:

答案 0 :(得分:0)

正确使用Assert.AreNotEqual()时,expected的命名有点奇怪。一个更好的名字可能是notExpected。或者只是省略expected变量并直接将Nothing传递给Assert.AreNotEqual()

此外,单身人士是危险的事情。在致电GetInstance时,您的测试会创建一个新的Calculator。但是,调用GetInstance的下一个测试不会创建新的Calculator,而是重用第一个测试创建的测试。你所做的是你在测试之间引入了依赖关系。这是你通常不想要的东西。我的建议是你不要使用单身人士。