在测试失败时,Nunit将仅显示评估的预期和实际条件。如果您有多个断言,则无法判断哪个Assert失败
Expected: True
But was: False
异常上的相同问题:存在堆栈跟踪,但它没有描述性,并且没有告诉我错误发生之前发生的步骤的任何细节。
一种方法是将消息传递给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 :(得分:0)
这里的一个解决方案是让您的测试更加明确。 NUnit有各种各样的约束条件可以帮助你做到这一点 - 并且可以获得更多有用的失败信息。
例如,我会将您的上述断言写为:
A.B.flood.subset <- A.B.flood %>% select(which(!colSums(A.B.flood, na.rm=TRUE) %in% 0))
这会给出类似的失败消息:
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")