2010-11-01 75 views
1

我有一個類,我重寫了.Equals(),==,!=,+和%Operators。顯然,我想測試一切正常。非常有趣的是,在程序中添加'+'的測試是成功的,但使用真正的UnitTest時失敗!在Visual Studio中對C#進行單元測試 - Assert.AreEqual

在程序:

 Stats a = new Stats(); 
     Stats b = new Stats(); 
     Stats expected = new Stats(); 
     Stats actual = new Stats(); 

     a.AC = 5; 
     b.AC = 10; 
     expected.AC = 15; 

     actual = a + b; 
     bool r1 = (expected == actual);  //true 
     bool r2 = expected.Equals(actual); //true 

在單元測試:

 Stats a = new Stats(); 
     Stats b = new Stats(); 
     Stats expected = new Stats(); 
     Stats actual = new Stats(); 

     a.AC = 5; 
     b.AC = 10; 
     expected.AC = 15; 

     actual = a + b; 
     Assert.AreEqual(expected, actual); 

測試失敗。

看來我沒有在這裏得到什麼......誰能幫忙?

最好的問候, 基督教

+0

http://msdn.microsoft.com/en-us/library/ms173147(VS.80).aspx – 2010-11-01 09:21:47

+0

如果您調試運行的單元測試,該字段的值是否正確?你有沒有加入AreaEqual來看看它最終的結果。 – 2010-11-01 09:23:26

+0

嗯,似乎調試器只是忽略我的Testclass中的斷點...... – Christian78 2010-11-01 10:11:26

回答

0

建議重寫任何類的equals也覆蓋System.Object.GetHashCodeRef

+0

public override int GetHashCode() { return AC; } – Christian78 2010-11-01 10:06:04

+0

public override int GetHashCode() { return AC; } – Christian78 2010-11-01 10:06:21

0

已解決。調試(CTRL + R,CTRL + T)告訴我,UnitTest使用了我班的舊版本。瘋狂重建之後,它使用實際版本進行測試。

這很煩人,但我相信我會找到一種方法來確保單元測試只測試每個類的最實際版本。

謝謝你們!

相關問題