2013-10-09 139 views
1

我有以下(使用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

这将是巨大的 - 但如何从测试资源管理器指定或建立CONFIGS当只运行某一类别?如果有更好的方法,我会留下这个问题。

回答

0

对yoiu是。类别正是你需要的。

该功能可通过使用/ include和/ exclude参数访问控制台运行程序并通过gui中单独的“Categories”选项卡进行访问。

因此,您可以在GUI NUnit测试运行器&控制台测试运行器中只启用一个类别。其他类别(和没有分区的测试)将被禁用。

不确定Visual Studio Test Explorer(我假设你的意思是VS之一)是否支持NUnit分类。
但是,您肯定可以在构建配置中指定/include MyCategory参数来运行所有测试的子集。

0

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