Nunit 如何有条件地运行测试?

Nunit 如何有条件地运行测试?,nunit,Nunit,我有以下内容(使用NUnit): 我在项目的每个功能区域都有一个测试夹具。我希望能够运行一个“冒烟测试”,它只运行那些标记为“冒烟测试”的测试(可能通过属性)。我最初在他们自己的文件中有烟雾测试,但实际上是复制和粘贴其他测试到该文件中-我想保持干燥 最终目标是,我可以在运行烟雾测试时以某种方式识别,以便: 如果我正在运行冒烟测试,请仅运行标记为冒烟测试的测试 如果我没有运行冒烟测试,请运行所有测试,包括冒烟测试 如何使用NUnit实现这一点 编辑:我刚找到类别: 这将非常好-但是我如何从测

我有以下内容(使用NUnit):

我在项目的每个功能区域都有一个测试夹具。我希望能够运行一个“冒烟测试”,它只运行那些标记为“冒烟测试”的测试(可能通过属性)。我最初在他们自己的文件中有烟雾测试,但实际上是复制和粘贴其他测试到该文件中-我想保持干燥

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

  • 如果我正在运行冒烟测试,请仅运行标记为冒烟测试的测试
  • 如果我没有运行冒烟测试,请运行所有测试,包括冒烟测试
如何使用NUnit实现这一点

编辑:我刚找到类别:


这将非常好-但是我如何从测试资源管理器或构建配置中指定何时只运行某个类别?我将保留问题,以防万一有更好的方法。

没错,你是。类别正是您所需要的

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

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

不确定Visual Studio测试资源管理器(我想您指的是VS one)是否支持NUnit目录。

但是您可以在构建配置中指定
/include MyCategory
参数来运行所有测试的子集。

使用ReSharpers Testrunner时,有一个“选项”下拉列表,您可以在其中按类别对测试进行分组。

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

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

    }