我目前正在尝试测试两个C#对象是否相同(不引用相同的对象,但具有相同的值)。试图使用Assert.Equals给我" Assert.Equals不应该用于Assertions"。我该怎么用?
答案 0 :(得分:1)
使用Asset.AreEqual
。
Asset
类是object
类的子类(就像C#中的任何类一样),当你调用Asset.Equals
时,实际上是在调用方法object.Equals
不是你想做什么。
NUnit的程序员可能在Asset.Equals
中设置了一个例外,以防止人们犯错误使用错误的相等方法。
答案 1 :(得分:0)
为此,您应该在您的类中重写 Equals 方法
public class Student
{
public int Age { get; set; }
public double Grade { get; set; }
public override bool Equals(object obj)
{
if (obj == null)
{
return false;
}
if (!(obj is Student))
{
return false;
}
Student st = obj as Student;
return (st.Age == this.Age &&
st.Grade == this.Grade);
}
}
然后您可以在您的测试类中编写此代码:
Assert.AreEqual(st1,st2);