0

以下是我的代码,我正在使用 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(expected, actual)这个,

4

1 回答 1

0

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

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

于 2013-07-30T14:54:25.887 回答