Visual studio 2008 Visual Studio中C#的单元测试-Assert.AreEqual

Visual studio 2008 Visual Studio中C#的单元测试-Assert.AreEqual,visual-studio-2008,assert,Visual Studio 2008,Assert,我有一个类,我已经覆盖了.Equals(),=,!=,+和%的操作员。显然,我想测试一下是否一切正常。有趣的是,加法“+”的测试在程序内部是成功的,但在使用真正的UnitTest时失败了 节目中: Stats a = new Stats(); Stats b = new Stats(); Stats expected = new Stats(); Stats actual = new Stats(); a.AC =

我有一个类,我已经覆盖了.Equals(),=,!=,+和%的操作员。显然,我想测试一下是否一切正常。有趣的是,加法“+”的测试在程序内部是成功的,但在使用真正的UnitTest时失败了

节目中:

        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);
测试失败

似乎我在这里没有得到什么。。。谁能帮忙

致以最良好的祝愿,
Christian

建议重写等于的任何类也重写
System.Object.GetHashCode

已解决。调试(CTRL+R,CTRL+T)告诉我UnitTest使用了我的类的旧版本。经过广泛的重建,它使用实际版本进行测试

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


谢谢你们

如果调试正在运行的单元测试,字段的值是否正确?您是否已进入AreaEqual以查看它最终调用了什么。嗯,调试器似乎忽略了我的Testclass中的断点……此外,我还阅读了Equals()指南。Equals()方法实际上是有效的。在第一个示例中,预期的.Equals(实际)返回true。public override int GetHashCode(){return AC;}public override int GetHashCode(){return AC;}