隐藏多类别测试夹具的特定测试

问题描述 投票:0回答:1
[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...

然后,当测试执行时,我得到计数,我期望“三分之三通过”

nunit
1个回答
0
投票

如果不以相同方式对待测试,则必须在单独的测试级别上进行分类。

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 实际运行测试的方式。

© www.soinside.com 2019 - 2024. All rights reserved.