NUnit中两个对象的相等性

时间:2017-07-14 12:18:20

标签: c# nunit

我目前正在尝试测试两个C#对象是否相同(不引用相同的对象,但具有相同的值)。试图使用Assert.Equals给我" Assert.Equals不应该用于Assertions"。我该怎么用?

2 个答案:

答案 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);