2012-12-21 115 views
0

比較兩個對象時失敗,我有以下的單元測試:單元測試VS 2012

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 

我碰到下面的錯誤,儘管都是紙對象:

Microsoft.VisualStudio.TestTools。 UnitTesting.AssertFailedException由用戶代碼 未處理消息= Assert.AreEqual失敗。預期:。實際:。

有人可以請說明如何讓這個工作。

回答

4

您正在比較兩個不同Paper對象。
您需要覆蓋Equals()GetHashCode()以認爲它們相等。

但是,如果您希望該類的所有實例都相同,則應該使用枚舉。

+0

感謝您的及時回覆。由於缺乏知識,我對編程感到抱歉。我試過Assert.Equals(result.GetHashCode(),actualSelectedMove.GetHashCode())是否正確? – AJsStack

+0

@AtiqJaved:No;一點也不。當兩個實例相等時,您需要**重寫**類中的Equals()和GetHashCode()方法來告訴.Net。 http://msdn.microsoft.com/en-us/library/ebca9ah3.aspx – SLaks

+0

這聽起來像你應該使用枚舉。 – SLaks