我想指定一些长期运行的c#项目xUnit测试,使其仅在azure devops CI管道中运行,而不是在本地单击Visual Studio(vs2019)中的“全部运行”时运行。这种行为是否有“最佳实践”?
我试着制作一个测试播放列表并在本地运行而不是Run All
,但是每次添加新测试都需要更新列表,这很容易出错。
答案 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()
{
}