簡體   English   中英

我可以在單元測試中使用DebuggerDisplay信息嗎?

[英]Can I use DebuggerDisplay info in Unit Tests?

就像是:

Assert.AreEqual("Id=7, Name=John", someClass.DebuggerInfo);

我認為最好重寫SomeClass EqualsGetHashCode方法來比較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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM