0

我尝试在 NUnit中使用Combinatorial/属性。Values

虽然它在本地工作,但在运行 NUnit 2.6.2 的 TeamCity 构建中跳过了带有这些属性的测试——构建报告表明该测试被忽略,但没有提供任何关于忽略它的原因的详细信息。

根据文档Combinatorial属性(以及Values属性)存在于 NUnit 2.5 中,因此我希望 NUnit 2.6 仍然支持它。

为什么测试被忽略?

这是重现该问题的最基本示例。在本地,两个测试都运行并给出完全相同的结果。在 TeamCity 上,onlyTest1被执行,并被Test2标记为忽​​略。

[TestCase("a", "1")]
[TestCase("a", "2")]
[TestCase("b", "1")]
[TestCase("b", "2")]
public void Test1(string x, string y) {
    Assert.AreEqual(x + "," + y, string.Format("{0},{1}", x, y));
}

[Test, Combinatorial]
public void Test2([Values("a", "b")] string x, [Values("1", "2")] string y) {
    Assert.AreEqual(x + "," + y, string.Format("{0},{1}", x, y));
}
4

1 回答 1

1

你的问题真的可以用一个代码示例来说明你在做什么......

不过……我会试一试的……

CombinatorialAttribute只是告诉 NUnit 如何组合为测试方法的各个参数提供的值以创建测试用例。如果您没有为每个参数提供这样的值,那么就没有可组合的内容,也不会创建测试用例。

单个值是通过使用 ValuesAttribute 和类似属性提供的。提供此类值时,组合实际上是默认值,因此实际上并不需要。

我的猜测是,没有看到你的代码,你没有给 CombinatorialAttribute 任何值来组合。

您可能想知道为什么在这种情况下没有错误消息。那是因为有些人创建的测试有时有可用的数据,有时没有。可能,一个可抑制的警告在这里会很有用。

由于您的问题仅出现在 TeamCity 中(我添加了一个标签),这可能只是 TeamCity 的问题。需要注意的一件事是,TeamCity 有时可能会报告与 NUnit 结果文件中包含的内容不同的内容......因此您应该检查该文件以确定 NUnit 是否真的跳过了测试,或者 TC 是否只是认为是。

于 2021-05-19T16:58:40.877 回答