类似的东西:
Assert.AreEqual("Id=7, Name=John", someClass.DebuggerInfo);
答案 0 :(得分:0)
我认为最好覆盖Equals
的{{1}}和GetHashCode
方法来比较Id和Name属性:
SomeClass
断言将如下:
public class SomeClass
{
public int Id { get; set; }
public string Name { get; set; }
public override bool Equals(object obj)
{
SomeClass other = obj as SomeClass;
if (other == null)
return false;
return other.Id == Id && other.Name == Name;
}
// GetHashCode implementation
}
如果您不想或不能更改Assert.AreEqual(expectedObject, someClass);
实现,那么您可以创建将执行断言的方法:
SomeClass
评估调试器显示字符串不是一项简单的任务,因为public void AssertAreEqual(SomeClass expected, SomeClass actual)
{
Assert.AreEqual(expected.Id, actual.Id);
Assert.AreEqual(expected.Name, actual.Name);
}
只包含格式字符串,用于评估调试器中对象的字符串表示形式。除简单属性名称之外的该字符串还可以包含表达式和方法调用。您可以在Roslyn编译器的帮助下评估调试器显示值,如here所述。但我不认为调试器元数据的使用是检查对象相等性的好方法。