如何仅在Azure Devops CI env中而非本地运行一些测试

时间:2019-06-14 07:21:50

标签: c# azure-devops xunit.net

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

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

3 个答案:

答案 0 :(得分:2)

Skip中的FactAttribute属性是可覆盖的-您可以制作一个FactWhenAttribute并检查环境变量

this post from @Joseph Woodward中的示例

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;
}

答案 1 :(得分:2)

AzureDevOps定义了一些environment variables。我将<statsmodels.tsa.vector_ar.vecm.coint_johansen.<locals>.Holder at 0x12a807f0> 与Ruben Bartelinks答案结合使用。

  

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

     

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

答案 2 :(得分:1)

假设您的构建管道是使用Release构建配置而不是使用Debug构建配置来构建的,则可以在#IF !DEBUG属性周围使用[Fact]预处理程序指令。

例如:

#if !DEBUG
[Fact]
#endif
public void YourTestMethod()
{
}