如果 Azure devops 中的特定测试失败,如何停止运行测试?

时间:2021-07-06 12:16:47

标签: c# selenium-webdriver azure-devops automated-tests xunit

我有使用 selenium 和 Xunit 编写的测试。我在 Azure 发布管道中运行它们。我有 500 多个测试,如果登录测试失败,我想创建一个条件,然后它就不会执行其他测试。如何在 Azure DevOps 或 Xunit 中执行此操作?

1 个答案:

答案 0 :(得分:0)

谢谢Travieso。发布您的建议作为答案以帮助其他社区成员。

以下是有助于停止运行不同测试的不同选项

最具侵入性的编译时平台检测

在 VS 解决方案中使用 MONOWIN 命令作为预编译器标志。这将定义一个属性并在编译时忽略测试

public class IgnoreOnMonoFactAttribute : FactAttribute {
#if MONOWIN
    public IgnoreOnMonoFactAttribute() {
        Skip = "Ignored on Mono";
    }
#endif
}

有点侵入性 - 运行时平台检测

这里有一个类似于 option1 的解决方案,只是不需要单独的配置:

public class IgnoreOnMonoFactAttribute : FactAttribute {

    public IgnoreOnMonoFactAttribute() {
        if(IsRunningOnMono()) {
            Skip = "Ignored on Mono";
        }
    }
    /// <summary>
    /// Determine if runtime is Mono.
    /// Taken from http://stackoverflow.com/questions/721161
    /// </summary>
    /// <returns>True if being executed in Mono, false otherwise.</returns>
    public static bool IsRunningOnMono() {
        return Type.GetType("Mono.Runtime") != null;
    }
}

  • 测试您在 xunit 中执行的任何操作,[Fact] 应替换为 [IgnoreOnMonoFact]
  • CodeRush 测试运行程序仍然运行 [IgnoreOnMonoFact] 测试,但它确实忽略了 [Fact(Skip="reason")] 测试。我认为这是由于 CodeRush 反映了 xUnit 而实际上并没有在 xUnit 库的帮助下运行它。这适用于 xUnit runner。

有关完整的详细信息,请查看 SO