2017-07-19 107 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

它仍然需要一定量的维护。另外它不能解决我的其他问题 - 如何记录导致故障点的步骤。我正在寻找更简单的方法。我认为记录方法调用直到失败点会给我。但我不想在测试中加入任何额外的代码行,因为它需要维护。 –