【问题标题】:Unit Test failing when comparing two objects in VS 2012比较 VS 2012 中的两个对象时单元测试失败
【发布时间】:2012-12-21 14:27:49
【问题描述】:

我有以下单元测试:

  Public Sub pickWeaponTest_Rock()
        Dim lastMove As String = "Rock"
        Dim actualSelectedMove As Weapon = New Paper()

        Dim result As Weapon

        Dim target As Object = New PlayerComputerTactical() ' TODO: Initialize to an appropriate value
        result = target.pickWeapon()
        Assert.AreEqual(result, actualSelectedMove)
        Assert.Inconclusive("A method that does not return a value cannot be verified.")
    End Sub

我收到以下错误,即使两者都是 Paper 对象:

Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException 未被用户代码处理 Message=Assert.AreEqual 失败。预期的:。实际的:。

有人可以解释一下如何使它工作。

【问题讨论】:

    标签: vb.net visual-studio-2010 unit-testing object


    【解决方案1】:

    您正在比较两个不同 Paper 对象。
    您需要覆盖 Equals()GetHashCode() 以将它们视为相等。

    但是,如果您希望类的所有实例都相等,则应该使用枚举来代替。

    【讨论】:

    • 感谢您的及时回复。我是编程新手,为我缺乏知识而道歉。我试过 Assert.Equals(result.GetHashCode(), actualSelectedMove.GetHashCode()) 对吗?
    • @AtiqJaved:不;一点也不。您需要覆盖类中的Equals()GetHashCode() 方法来告诉.Net 两个实例何时相等。 msdn.microsoft.com/en-us/library/ebca9ah3.aspx
    • 听起来你应该改用枚举。
    • 您能否举例说明我将如何编码?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    相关资源
    最近更新 更多