如何仅在 azure devops CI env 中而不是在本地运行一些测试

ano*_*666 5 c# xunit.net azure-devops

我想指定一些长时间运行的 c# 项目 xUnit 测试仅在 azure devops CI 管道中运行,而不是在本地 (vs2019) 中单击 Visual Studio 中的“全部运行”时运行。这种行为是否有“最佳实践”?

我尝试制作一个测试播放列表并在本地运行它而不是Run All,但是每次我添加新测试时都需要更新列表(或列表),这很容易出错。

小智 7

AzureDevOps 定义了一些环境变量。我会TF_BUILD与 Ruben Bartelinks 的答案结合使用。

如果脚本正在由构建任务运行,则设置为 True。

此变量是代理范围的。它可以用作脚本中的环境变量和构建任务中的参数,但不能用作构建号的一部分或作为版本控制标记。


Rub*_*ink 5

中的Skip属性FactAttribute是可覆盖的 - 您可以创建一个FactWhenAttribute并让它检查环境变量

实施例在此信息从@Joseph伍德沃德

public sealed class IgnoreOnAppVeyorLinuxFact : FactAttribute
{
    public IgnoreOnAppVeyorLinuxFact() {
        if(RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && IsAppVeyor()) {
            Skip = "Ignore on Linux when run via AppVeyor";
        }
    }

    private static bool IsAppVeyor()
        => Environment.GetEnvironmentVariable("APPVEYOR") != null;
}
Run Code Online (Sandbox Code Playgroud)