【问题标题】:Detect if my tests are running on Visual Studio Team Services检测我的测试是否在 Visual Studio Team Services 上运行
【发布时间】:2016-05-11 21:46:43
【问题描述】:

我已经为我正在开发的 API 编写了很多集成测试。

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

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

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

谢谢

【问题讨论】:

    标签: c# continuous-integration asp.net-web-api2 integration-testing azure-devops


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 当我尝试在 VSTS 上为我的集成测试自托管 API 时访问被拒绝,因此我的代码必须从自托管更改为使用实时 API,我还没有找到解决方案访问被拒绝的问题,所以我正在解决它:)
      猜你喜欢
      • 2017-05-30
      • 1970-01-01
      • 1970-01-01
      • 2017-03-01
      • 2016-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多