gpt4 book ai didi

c# - NUnit 测试错误?预期为 但为

转载 作者:可可西里 更新时间:2023-11-01 09:03:13 25 4
gpt4 key购买 nike

[Test]
public void testMultiplication()
{
var five=new Dollar(5);
Assert.AreEqual(new Dollar(10), five.times(2));
Assert.AreEqual(new Dollar(15), five.times(3));
}

美元等级

public class Dollar
{
private int amount;

public Dollar(int amount)
{
this.amount = amount;
}

public Dollar times(int multiplier)
{
return new Dollar(amount * multiplier);
}

public bool equals(Object theObject)
{
Dollar dollar = (Dollar) theObject;

return amount == dollar.amount;
}
}

在线 Assert.AreEqual(new Dollar(10), five.times(2));测试失败并出现错误:

预期:TDDbooks.Dollar

但是是:TDDbooks.Dollar

最佳答案

Assert.AreEquals 方法将使用Equals 方法来测试相等性。 Dollar 类型没有覆盖 Object.Equals,而是定义了一个新的 equals 方法,该方法不参与 .Net 对象相等性。因此它没有被使用,并且测试使用了失败的引用相等性。要解决此问题,您需要覆盖 Object.Equals 方法

public override bool Equals(object obj) { 
Dollar other = obj as Dollar;
if (other == null) {
return false;
}

return amount == other.amount;
}

关于c# - NUnit 测试错误?预期为 <MyType> 但为 <MyType>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13014385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com