【问题标题】:How to conditionally run a test?如何有条件地运行测试?
【发布时间】:2015-07-07 19:22:16
【问题描述】:

我有以下(使用 NUnit):

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

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

    }

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

最终目标是我能够以某种方式识别何时运行冒烟测试,以便:

  • 如果我正在运行冒烟测试,请仅运行标记为此类的测试
  • 如果我不运行冒烟测试,请运行所有测试,包括冒烟测试

如何使用 NUnit 实现这一点?

编辑:我刚刚找到分类:

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

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

【问题讨论】:

    标签: nunit


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多