当前位置: 代码迷 >> C# >> 单元测试,Assert.AreEqual 失败,应为: <WyCash.Dollar>现实为: <WyCash.Dollar>
  详细解决方案

单元测试,Assert.AreEqual 失败,应为: <WyCash.Dollar>现实为: <WyCash.Dollar>

热度:334   发布时间:2016-05-05 03:29:08.0
单元测试,Assert.AreEqual 失败,应为: <WyCash.Dollar>,实际为: <WyCash.Dollar>。
在跟着《测试驱动开发》这本书做练习时,测试不通过。
提示Assert.AreEqual 失败,应为: <WyCash.Dollar>,实际为: <WyCash.Dollar>。
但是两个对象是一样的,
看方法说明 AreEqual 是判断两个泛型数据是否相等。
AreSame是判断是否引用同一个对象。
是我用错了吗?之前没研究过单元测试,请大家帮帮忙。



------解决思路----------------------
这个……两者为啥不等你应该懂得啊……
因为它们是两个不同的对象,指向的不同地址
如果你的本意是两者金额相等,那应该是
Assert.AreEqual(ten.amount = test.amount);

或者你的Dollar类重写Equals方法,这样子也可以
public override bool Equals(object obj)
        {
            Dollar dollar = obj as Dollar;
            if (dollar == null)
            {
                return false;
            }
            return this.amount == dollar.amount;
        }

------解决思路----------------------
你的Dollar类实现了比较了吗?比如下面的Equals实现?

class Dollar
{
    ....
    public override bool Equals(object obj)
    {
        Dollar other = obj as Dollar;
        return other != null && other.amount == this.amount;
    }

}
  相关解决方案