如何检测是否在TeamCity中运行NUnit测试?

时间:2009-12-15 13:30:49

标签: c# .net nunit teamcity

只有当我在TeamCity测试启动器中运行时才需要运行一些代码。检测此问题的最简单方法是什么?

2 个答案:

答案 0 :(得分:21)

检查是否定义了TEAMCITY_VERSION环境变量。

另一种方法是使用NUnit类别。

根据下面的评论,此代码应该能够检查团队城市是否正在运行测试:

private static bool IsOnTeamCity() 
{ 
    string environmentVariableValue = Environment.GetEnvironmentVariable("TEAMCITY_VERSION"); 
    if (!string.IsNullOrEmpty(environmentVariableValue)) 
    { 
         return true; 
    } 
    return false; 
} 

答案 1 :(得分:2)

我基本上是用以下属性来做的。它通过调用程序集的代码库获取目录名称,如果它包含TeamCity构建代理程序目录的一部分,则它在TeamCity中运行。

public static bool IsTeamCity
{
    get
    {
        // the Assembly.GetExecutingAssembly().Location property gives funny results when using 
        // NUnit (where assemblies run from a temporary folder), so the use of CodeBase is preferred.
        string codeBase = Assembly.GetCallingAssembly().CodeBase;
        string assemblyFullPath = Uri.UnescapeDataString(new UriBuilder(codeBase).Path);
        string assemblyDirectory = Path.GetDirectoryName(assemblyFullPath);

        // a full TeamCity build directory would be e.g. 'D:\TeamCity\buildAgent\work\de796548775cea8e\build\Compile'
        return assemblyDirectory.ToLowerInvariant().Contains("buildagent\\work");
    }
}