Как я могу определить, выполняется ли тест NUnit из TeamCity? - PullRequest
15 голосов
/ 15 декабря 2009

Мне нужно запускать какой-то код только в том случае, если я работаю из тестовой программы запуска TeamCity. Какой самый простой способ обнаружить это?

Ответы [ 2 ]

21 голосов
/ 21 декабря 2009

Проверьте, определена ли переменная среды TEAMCITY_VERSION.

Другой подход заключается в использовании категорий NUnit.

На основании приведенного ниже комментария этот код должен быть в состоянии проверить, выполняется ли тест командой teamcity:

private static bool IsOnTeamCity() 
{ 
    string environmentVariableValue = Environment.GetEnvironmentVariable("TEAMCITY_VERSION"); 
    if (!string.IsNullOrEmpty(environmentVariableValue)) 
    { 
         return true; 
    } 
    return false; 
} 
2 голосов
/ 09 февраля 2011

Я делаю это со следующим свойством. Он получает имя каталога через базу кода вызывающей сборки, и, если он содержит части вашего каталога агента сборки 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");
    }
}
...