使用 [BeforeTestRun] 挂钩忽略来自 specflow 的所有测试

Ignore all tests from specflow using [BeforeTestRun] hook

我的项目有 2 个默认配置(调试和发布)和一个名为 UITest 的自定义配置。

选择 UITest 配置后,它会更改 ioc 以使用我的数据库的内存版本,这非常适合我的 ui 测试。

我正在使用 NUnit 和 resharper 来 运行 我的测试,并且当我的 UITest 配置处于活动状态时,我只想 运行 ui 测试。

我决定使用 [BeforeTestRun] 挂钩来实现此目的,但我无法让它忽略测试。

抛出异常将阻止所有测试 运行ning 但它们显示为失败,我更希望将它们显示为挂起或忽略。这可能吗?

    [BeforeTestRun]
    public static void BeforeTests()
    {
    #if !UITest
        throw new Exception("abort!");
    #endif
    }

附录

如果我把它改成这样:

    [BeforeTestRun]
    public static void BeforeTests()
    {
    #if !UITest
        Assert.Ignore();
    #endif
    }

然后每个场景都将显示为已忽略,但该功能将失败。

BeforeTestRun 挂钩是 运行 在 运行 开始之前仅执行一次的方法。如果你想跳过整个测试运行,你可以使用Environment.Exit();退出运行。
在 MSTest 中,测试将显示为不是 运行,但我不确定 NUnit 或 Resharper 如何处理此问题。