[TestFixture(Category="A")]
[TestFixture(Category="B")]
{
[Test]
void Test1() {}
[Test]
void Test2() {}
}
这将正确地运行每个测试两次,每个类别一次......但我希望 Test2 仅在类别为“B”时运行......
其他帖子展示了如何运行 Assert.Ignore().... 但随后测试仍然显示其他结果....我正在寻找它“消失”....
这意味着构造必须采用“测试发现”可以识别不包括测试的形式,并且不能是基于测试执行/运行时的方法...
根据评论更新: 当 [TestFixture] 在不同类别中多次使用时,测试会多次显示在运行程序中的可用测试列表中......例如,上面将总共显示 4 个测试。 我的目标是只显示 3 个测试...... A 类测试 1 A 类测试 2 B 类测试 1 和不 B 类测试 2...
然后,当测试执行时,我得到计数,我期望“三分之三通过”
如果不以相同方式对待测试,则必须在单独的测试级别上进行分类。
public class MyFixture
{
[Test, Category("A"), Category("B")]
void Test1() {}
[Test, Category("A")]
void Test2() {}
}
或者,如果夹具中的所有测试(包括您将来添加的所有测试)都属于类别“A”,那么您可以在夹具上保留该类别。
[Category("A")]
public class MyFixture
{
[Test, Category("B")]
void Test1() {}
[Test, Category("A")]
void Test2() {}
}
请注意,即使测试分为两个类别,它也仅运行一次。一些跑步者,例如Visual Studio 按类别分组时,可能会列出测试两次,即使它只运行一次。正如我在评论中所述,跑步者负责如何向您呈现事物,但通常不负责 nunit 实际运行测试的方式。