2017-07-19 108 views
1

測試失敗時,Nunit將僅顯示評估的預期和實際條件。有沒有辦法知道哪些斷言失敗,如果你有多個斷言例外NUnit:記錄測試步驟並斷言測試失敗或錯誤

同一個問題:有一個堆棧跟蹤,但它不是描述性的,並沒有告訴我的步驟,任何細節發生的權利之前錯誤。

一種方法是將消息傳遞給Assert或添加日誌語句(例如使用TestContext.WriteLine)。但是這意味着每次我寫一個斷言時,我都需要寫一個唯一的消息,或者每一步都必須添加一條日誌語句,這很耗時,並且在更新測試時需要額外的維護。

是否有一種更簡單的方法來顯示此信息,方法調用和聲明代碼語句是按原樣?

例如,這樣的事情:

這裏
Expected: True 
But was: False 

On: Assert.That(User.HasOrderInvoice, Is.True) 

Steps: 
    User.LoginToAccount(UserAccData.TestUserAcc) 
    User.AddProductToCart(Data.TestProdData) 
    User.PurchaseCart() 
    User.GoToOrderHistory() 

回答

0

一種解決方案是讓你的測試更加明確。 NUnit有多種約束可以讓你做到這一點 - 並獲得更多有用的失敗消息。

例如,我會寫你的上述斷言爲:

Assert.That(User, Has.Property(nameof(User.HasOrderInvoice)).True) 

這將使失敗的消息是這樣的:

Expected: Has property 'HasOrderInvoice' equal to true 
But was: False 

我發現,覆蓋大多數情況下,我很感興趣的內容。對於任何不能明確表達的內容,您可以在Assert.That()內添加說明,如下所示:

Assert.That(User.HasOrderInvoice, Is.True, "Test User Has Order Invoice") 

這會給你一個類似的信息:

Test User Has Order Invoice 
Expected: True 
But was: False 
+0

它仍然需要一定量的維護。另外它不能解決我的其他問題 - 如何記錄導致故障點的步驟。我正在尋找更簡單的方法。我認爲記錄方法調用直到失敗點會給我。但我不想在測試中加入任何額外的代碼行,因爲它需要維護。 –