.net core VSTS Visual Studio集环境变量测试项目

.net core VSTS Visual Studio集环境变量测试项目,.net-core,environment-variables,azure-devops,integration-testing,azure-pipelines,.net Core,Environment Variables,Azure Devops,Integration Testing,Azure Pipelines,我正在Visual Studio(2017)中为基于VST构建并部署的网络核心应用程序构建集成测试。我的项目是测试项目,现在我到部署的API url的连接字符串和数据库都是硬编码的,但我想从代码中删除它们,并将它们放在添加环境变量的VSTS构建步骤中 现在,我的Test.cs文件如下所示: [TestClass] public class TestFeature { //Set up variables private static string _connectionStrin

我正在Visual Studio(2017)中为基于VST构建并部署的网络核心应用程序构建集成测试。我的项目是测试项目,现在我到部署的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
}
如何设置项目以读取VST上配置中设置的环境变量?

到目前为止,我所做的研究是在测试项目的属性上单击鼠标右键,在“调试”下设置带有键和值的环境变量

然后我将测试项目更改为获取GetEnvironmentVariable()

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


然而,这对我不起作用。程序将无法识别环境变量中设置的新变量的名称。您需要在“变量”选项卡中添加VSTS变量

另一个选项是使用Powershell脚本任务以动态方式设置它们

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

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

通过这种方式,您可以在当前构建中使用变量(可以像Marcote所说的那样添加/更新变量)


如果您必须在单独的生成中进行集成测试,您可以将触发器设置为拉请求策略的生成内验证手动,然后您可以手动对生成进行排队并指定变量的值(在生成定义中为变量检查在排队时可设置)

我刚刚意识到的事情,这是一个新的测试项目,附加到应用程序的主要解决方案。主要的解决方案和应用程序都在回购协议中,并且已经通过VST构建。这个集成测试不在上面,为什么它没有看到任何环境变量。当我等待我的拉取请求被批准时,是否有办法将变量设置为尚未在repo上的新代码?请注意,通过setvariable任务设置的变量当前不会在构建或发布阶段持续存在。
Write-Host "##vso[task.setvariable variable=sauce]crushed tomatoes"