【发布时间】: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,如果您可以将其发布为答案,我会接受。
-
很高兴它有帮助......即使作为评论。 :-)