【问题标题】:Make Nunit fail on invalid test parameters使 Nunit 在无效的测试参数上失败
【发布时间】:2017-02-01 15:59:53
【问题描述】:

假设我们有以下单元测试:

[Test]
public void OneAndOneTest(int one)
{
   Assert.That(1 + one, Is.EqualTo(2));
}

编译器将接受此代码。但是测试本身是不正确的,因为它应该是[TestCase(1)] 而不是[test]。当专门用 Nunit 运行这个测试时,它会给出一个错误,说参数不匹配。但是,当我在解决方案中运行所有测试时,我得到一个“跳过”的结果,而不是上述错误。

在本地,这很烦人。但是你应该在编写它们时测试过你的测试,所以这不是什么大问题。 (这里应该是关键字...)

但是,当 Jenkins 运行时说要测试​​它应该总是失败。在跳过的测试上构建失败不是一种选择,因为我工作的地方在某些情况下允许跳过测试。

问题在于 Nunit(我认为)。我的本地系统和 Jenkins 都运行 NUnit 可执行文件并穿透可执行文件的输出。我的本地系统将其移植到 Dot Cover 中,而 Jenkins 将其转储到一个 XML 文件中,Nunit plugin 稍后会在构建过程中对其进行分析。

长话短说:Nunit 是否有一种方法可以在一个或多个参数数量不正确的解决方案中运行所有测试时使构建失败

【问题讨论】:

  • 您使用的是哪个版本的 NUnit?我用 NUnit 3.6 尝试过同样的事情,测试和整体结果都是“失败”......这可能是旧版本的 NUnit 的问题吗?
  • 测试无效,应该给出错误而不是失败。总体结果应该是失败的。它不应该被跳过,除非在非常早期的 NUnit 版本中认为无效测试被跳过。要给出真正的答案,需要了解所涉及的框架和运行器的版本。
  • 关于版本的好点。检查时我注意到我们正在运行一个令人惊讶的旧版本(2.6.4)。我会在今天晚些时候更新它,看看是否有帮助。
  • 旧版本的 Nunit 是问题所在。从 nuget 中提取了最新版本的 Nunit,上面的测试用例可以正常工作。 @Charlie,如果您可以将其发布为答案,我会接受。
  • 很高兴它有帮助......即使作为评论。 :-)

标签: c# nunit


【解决方案1】:

问题出在 NUnit 版本上,我已经尝试过与最新版本 (NUnit 3.6) 完全相同的方法,测试结果以及整体结果都是“失败”,请参阅 NUnit 控制台的以下输出:

NUnit 控制台运行器 3.6.0 版权所有 (C) 2017 查理普尔 错误、失败和警告

1) 无效:ConsoleApplication1.Program.add 方法具有非 void 返回值,但没有预期结果
试运行总结 总体结果:失败
测试计数:1,通过:0,失败:1,警告:0,不确定:0,跳过:0 失败的测试 - 失败:0,错误:0,无效:1

【讨论】:

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