【问题标题】:VSTS Visual Studio Set Environment Variable Test ProjectVSTS Visual Studio 设置环境变量测试项目
【发布时间】:2018-01-23 19:01:32
【问题描述】:

我正在 Visual Studio (2017) 中为基于 VSTS 并从那里部署的 Net Core 应用程序构建集成测试。我的项目是测试项目,现在我到已部署 API url 的连接字符串和数据库是硬编码的,但我想从代码中删除它们并将它们放在添加环境变量的 VSTS 构建步骤中。

现在,我的 Test .cs 文件如下所示:

[TestClass]
public class TestFeature
{
    //Set up variables
    private static string _connectionString = "server=localhost;port=5432;database=databaseName;user id=postgres;password=postgres";

    [TestInitialize]
    public void Initialize()
    {
    }

    //And going into my test methods
}

如何设置我的项目以读取 VSTS 上的配置中设置的环境变量?

到目前为止,我发现的研究是在 Debug 下的测试项目的 Properties右键单击,设置带有键和值的环境变量。

然后我更改我的测试项目以获取 GetEnvironmentVariable()

private static string _connectionString = Environment.GetEnvironmentVariable(nameOfVariable);

在 VSTS 的另一边,我试图找到一个构建步骤,将变量设置为那里的连接字符串。我能找到的最佳步骤是“设置变量”。

但是,这对我不起作用。程序将无法识别环境变量中设置的新变量的名称,无法启动。

【问题讨论】:

    标签: .net-core environment-variables azure-devops integration-testing azure-pipelines


    【解决方案1】:

    您需要在“变量”选项卡中添加 VSTS 变量。

    如果您想使用 Powershell 脚本任务以动态方式进行设置,另一种选择是使用 Powershell 来设置它们。

    Write-Host "##vso[task.setvariable variable=sauce]crushed tomatoes"
    

    https://docs.microsoft.com/en-us/vsts/build-release/concepts/definitions/release/variables?tabs=powershell

    【讨论】:

    • 我刚刚意识到,这是一个附加到应用程序主解决方案的新测试项目。主要的解决方案和应用程序位于一个 repo 中,并且已经通过 VSTS 构建。这个集成测试不在那里,为什么它没有看到任何环境变量。当我在等待我的拉取请求被批准时,有没有办法为尚未在 repo 上的新代码设置变量?
    • 请注意,通过 setvariable 任务设置的那些变量目前不会在构建或发布阶段持续存在。
    【解决方案2】:

    更好的方法是在构建定义中一起构建、部署和测试,构建成功后,拉取请求才能被批准。

    为此,您可以在当前构建中使用变量(可以像 Marcote 所说的那样添加/更新变量)

    如果您必须在单独的构建中进行集成测试,您可以在 Pull Request 策略的 Build validation 中将 Trigger 设置为 Manual,然后您可以手动排队构建并指定变量的值(检查 可在构建定义中的变量排队时间设置

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-21
      相关资源
      最近更新 更多