我有使用 selenium 和 Xunit 编写的测试。我在 Azure 发布管道中运行它们。我有 500 多个测试,如果登录测试失败,我想创建一个条件,然后它就不会执行其他测试。如何在 Azure DevOps 或 Xunit 中执行此操作?
答案 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;
}
}
[Fact]
应替换为 [IgnoreOnMonoFact]
[IgnoreOnMonoFact]
测试,但它确实忽略了 [Fact(Skip="reason")]
测试。我认为这是由于 CodeRush 反映了 xUnit 而实际上并没有在 xUnit 库的帮助下运行它。这适用于 xUnit runner。有关完整的详细信息,请查看 SO。