【问题标题】:Does Nunit have a way of alerting me a test has failed when an If validation fails当 If 验证失败时,Nunit 是否有办法提醒我测试失败
【发布时间】:2016-04-27 18:56:10
【问题描述】:

我已将我的 Visual Studio 测试导入 Nunit Test Runner。测试是使用 If Validations 设置的,因此测试将一直运行。测试是用 C# 编写的,使用 Selenium Webdriver 通过 Nunit 框架驱动它们。运行测试后,我看到通过,但看到 0 个断言是正确的,因为我从未添加它们,但我确实添加了 If,我是否应该像在 Visual Studio 中那样看到对这些失败的某种输出? 我已经对此进行了研究,并查看了 Nunit 文档和 Visual Studio,但没有找到确切的答案。

【问题讨论】:

  • 什么是If Validation?您可以发布您的一项测试的代码吗?
  • if (!driver.FindElement(By.TagName("html")).Text.Contains("sometext")) {Console.WriteLine("verifyTextsometext");}
  • 好的,你上面的语句说如果它not包含sometext然后输出verifyTextsometext。我不确定为什么你不只是在这里使用断言。你想用这些 if 语句实现什么目标?
  • if 语句允许我的测试完全通过测试并在最后给我一个输出,告诉我哪些验证失败,哪些没有验证。断言立即通过测试。

标签: visual-studio nunit


【解决方案1】:

您似乎想在同一个测试中检查几个案例。这不是一个好主意。这是a good explanation为什么。

如果您使用 single-assert-per-test 方法重写测试,那么您会发现使用断言而不是验证是可以的。断言将完全按照您的需要工作:

  • 它们不会干扰其他案例(因为其他案例在其他测试中)
  • 它们会向 NUnit 发出每次验证失败的警报(因为这就是警报的目的)。

希望对您有所帮助。

【讨论】:

  • Alexander 我知道不是每个人都会像我一样使用 Nunit。 “好的解释”与我无关。我使用 Nunit 作为测试运行程序,而不是作为单元测试。
  • 无论你如何使用 NUnit。只有一种方法可以警告验证失败 - 使断言失败。并且断言失败后,测试被中断。这就是 NUnit(测试运行器 + 框架)的设计方式。因此,每次测试只检查一个验证(即断言)仍然是上帝的选择。
【解决方案2】:

您可以在单个测试用例中使用多个断言。我已将这种方法与 MSTest 一起使用(不与 NUnit 一起使用)。您可以在测试用例中使用 try catch 块。这将允许您捕获失败的断言,并且您的测试将继续。在测试用例结束时,您可以检查失败断言的数量。如果计数大于 1,您可以强制使该测试用例失败,否则您可以继续下一个测试用例。 此方法在此博客文章中通过示例进行了说明。 http://www.binaryclips.com/2016/03/coded-ui-test-testing-all-assertions-in.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-04
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    • 2011-11-14
    • 2022-01-04
    • 2021-10-11
    相关资源
    最近更新 更多