[英]Assert.AreEqual raises an exception when comparing two IEnumerable objects
[英]Nunit Assert.AreEqual() fails when comparing two custom objects
我正在为面试进行测试,需要编写一些类,然后使用Assert
语句进行测试。 在一个部分中,立即使用Assert.AreEqual()
测试两个对象,然后再对相同的两个对象使用Assert.AreNotSame
测试。 我的理解是,第一个测试检查两个对象具有相同的值(在我的示例中为a和b),第二个测试检查它们指向内存中的两个不同的对象。 但是,第一个Assert
在我的示例和程序中均失败。 我是否缺少有关这两个Assert
测试应该如何工作的信息? 他们怎么都可以通过?
public class Foo
{
public int a { get; set; }
public int b { get; set; }
public Foo(int a, int b) { this.a = a; this.b = b; }
}
Foo a = new Foo();
a.a = 1;
a.b = 2;
Foo b = new Foo(1, 2);
Assert.AreEqual(a,b);//this fails
Assert.AreNotSame(a,b);
这是两个不同的实例,因此两个对象既不相等也不相同。
如果在对象上重写Equals方法,则可以通过检查两个对象的属性是否相等的方式来实现该方法。 如果它们比对象还相等。 所以您的新班级应该像这样...
public class Foo
{
public int a { get; set; }
public int b { get; set; }
public Foo(int a, int b) { this.a = a; this.b = b; }
public override bool Equals(object obj)
{
return ((Foo)obj).a == this.a && ((Foo)obj).b == this.b;
}
}
还请检查此 SO答案以进一步澄清...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.