2010-11-01 74 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使用了我班的旧版本。疯狂重建之后,它使用实际版本进行测试。

这很烦人,但我相信我会找到一种方法来确保单元测试只测试每个类的最实际版本。

谢谢你们!

相关问题