[英]Can I use DebuggerDisplay info in Unit Tests?
就像是:
Assert.AreEqual("Id=7, Name=John", someClass.DebuggerInfo);
我認為最好重寫SomeClass
Equals
和GetHashCode
方法來比較Id和Name屬性:
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);
}
評估調試器顯示字符串不是一件容易的事,因為DebuggerDisplayAttribute
僅包含格式字符串,該格式字符串用於評估調試器中對象的字符串表示形式。 該字符串除了簡單的屬性名稱外,還可以包含表達式和方法調用。 你可以用羅斯林編譯器的幫助下評估調試器顯示值,如所描述這里 。 但是我認為使用調試器元數據不是檢查對象是否相等的好方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.