如何有条件地进行测试?

时间:2013-10-09 16:00:23

标签: nunit

我有以下(使用NUnit):

    [TestFixture]
    public class SmokeTest : BaseTest
    {
        [Test(SmokeTest)]
        public void ShouldAlwaysRun()
        {
            //Tests,Assertions,etc
        }

        [Test]
        public void ShouldNotRunIfSmoke()
        {
            //Tests,Assertions,etc
        }

    }

我的项目每个功能区都有一个TestFixture。我希望能够运行“冒烟测试”,只运行那些标记为“SmokeTest”的测试(可能是通过属性)。我最初在他们自己的文件中进行了冒烟测试,但实际上正在复制并将其他测试粘贴到该文件中 - 我想保留DRYer。

最终目标是我可以以某种方式识别我何时进行烟雾测试,以便:

  • 如果我正在进行烟雾测试,请仅运行那些标记为
  • 的测试
  • 如果我没有进行烟雾测试,请运行所有测试,包括烟雾测试

如何使用NUnit实现这一目标?

编辑:我刚刚找到类别:

http://www.nunit.org/index.php?p=category&r=2.2.10

这会很棒 - 但是如何从Test Explorer或Build Configs中指定何时只运行某个类别?我会留下问题,以防万一有更好的方法。

2 个答案:

答案 0 :(得分:0)

对,你好。类别正是您所需要的。

  

可以通过使用控制台运行程序的/ include和/ exclude参数以及单独的"类别"来访问此功能。 gui中的标签。

因此,您只需在GUI NUnit test runner&控制台试验跑步者其他类别(以及没有cetegories的测试)将被禁用。

不确定Visual Studio Test Explorer(我认为你的意思是VS)是否支持NUnit类别 但是你绝对可以在构建配置中指定/include MyCategory参数来运行所有测试的子集。

答案 1 :(得分:0)

使用ReSharpers Testrunner时,会有一个“选项”下拉列表,您可以按类别对测试进行分组。 Resharper TestRunner - Group by: Categories