[英]xUnit assert multiple properties
在 xUnit 中,有沒有辦法只對特定屬性進行斷言?
對於給定的實用程序類方法
public static CopyStuff(Oder o1, Order o2)
{
o1.Name = o2.Name;
o1.Age = o2.Age;
...
}
有沒有辦法只對這兩個或更多屬性進行斷言? 而不是編寫多個斷言?
我想要
// Something like this
Assert(result, o2, [Name, Age, Blah..])
如果有問題的類實現了一個適當的自定義Equals()
,或者它是一個結構(默認情況下Equals()
進行逐字段比較)或匿名類型( Equals()
進行逐個屬性的比較)屬性比較),那么您可以斷言它們在單個斷言中相等。
不過,這將是一個壞主意; 復制和相等操作中可能存在相關錯誤,這意味着兩者都失敗了,以至於一個似乎確認另一個已經工作。
如果不是多個測試,最好有多個斷言。
雖然在實際代碼中“檢查一堆不同的東西是否相等”的便利性可能很方便,但在測試中你不想要“檢查一堆不同的東西是否相等”; 你想要一個明確的“確認姓名相等”,然后是一個明確的“確認年齡相等”等等,不僅作為測試,而且作為已測試內容的明確指示,並暗示您希望工作的內容(有時,對於新加入項目的開發人員來說,單元測試比書面文檔更好,因為他們所說的應該如何工作)。
如果您發現您在許多測試中對多個屬性進行了相同的檢查,則將AssertAllPropertiesEqual()
方法添加到測試本身中,但其中的多個斷言更加明顯和明顯。
不,不是不使用反射。 即使有反思,我也不推薦這種方法。 單元測試應該有利於可讀性而不是簡潔。 只需使用多個斷言。
另外,看看xUnit 測試,看看它們是如何實現的。
此外,我最近開始使用 XBehave,它使用 Gherkin 符號: Given... When... Then...
非常有用,因為它擴展了 XUnit 並允許應該斷言,例如 Name.ShouldEqual()。
很有可讀性。
幾個斷言應該有助於提高可讀性,不要試圖優化不能提供明顯收益的細節。
不,您必須按屬性進行測試(每個測試一個斷言),這是確定出現問題的方法。 例如,如果你有一個名為 When_CopyStuff_Is_Called_Then_It_Must_Sets_Right_Name() 的測試很清楚地理解錯誤而不是所有屬性
當您需要測試 Api 模型時,這非常有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.