检测我的测试是否在 Visual Studio Team Services 上 运行

Detect if my tests are running on Visual Studio Team Services

我为我正在处理的 API 编写了很多集成测试。

如果我 运行 在本地进行集成测试,我想自行托管 API 和 运行 针对它的集成测试。

但是我在 VS Team 服务上有一个构建定义,运行 是 API 部署后的集成测试,我想 运行 针对已部署的 API,但要做到这一点,我必须更改我的代码,使其不再自行托管,而是针对已部署的 API 进行测试。

有没有办法在 运行 时间检测我的测试 运行?

谢谢

如果您使用 VSTS Hosted Build 代理来 运行 构建和测试,这些代理的机器名称的格式类似于 "TASKAGENTX-XXXX"。您可以使用它 (Environment.MachineName) 来确定测试是 运行 在 VSTS 上还是在您的本地计算机上。

顺便问一下,在本地机器上测试 运行 和 VSTS 有什么区别?只是 URL 不一样吗?如果是,您可以将配置文件添加到您的项目并更新您的测试以读取配置文件中的 URL 进行测试。然后使用 SlowCheetah 执行 t运行sformation 以在从 VSTS 构建和测试时切换 URL。

只需探查 VSTS predefined build variables 之一。例如:

if (Environment.GetEnvironmentVariable("SYSTEM_DEFINITIONID") != null) 
{
    Console.WriteLine("Running from VSTS...");
}