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

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

4

2 回答 2

0

是的。类别正是您所需要的。

通过使用控制台运行器的 /include 和 /exclude 参数以及通过 gui 中的单独“类别”选项卡可以访问此功能。

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

不确定 Visual Studio 测试资源管理器(我假设你的意思是 VS one)是否支持 NUnit 类别。
但是你绝对可以/include MyCategory在构建配置中指定参数来运行所有测试的一个子集。

于 2013-10-09T19:52:15.533 回答
0

使用 ReSharpers Testrunner 时,有一个“选项”下拉菜单,您可以在其中按类别对测试进行分组。 Resharper TestRunner - 分组方式: 类别

于 2015-07-07T11:22:16.770 回答