as.beaulieu
as.beaulieu

Reputation: 484

VSTS Visual Studio Set Environment Variable Test Project

I am building Integration tests in Visual Studio (2017) for Net Core applications built on VSTS and deployed from there. My projects are test projects, and right now my connection strings to the deployed API url, and the database are hardcoded, but I want to remove them from the code and place them in a VSTS build step that adds environment variables.

Right now, my Test .cs files look something like this:

[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
}

How do I set up my project to read Environment Variables set from the Configuration on VSTS?

What research has dug up for me so far, is to Right Click on Properties of the test project, under Debug, set up Environment Variables with a key and value there.

Then I change my test project to take the GetEnvironmentVariable()

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

On the other side in VSTS, I'm trying to find a build step that will set the variable to be the connection string there. The best step I could find is "Set Variable".

However, this is not working for me. The program will not recognize the name of the new variable set in Environment Variables, to start.

Upvotes: 3

Views: 2866

Answers (2)

starian chen-MSFT
starian chen-MSFT

Reputation: 33708

The better way is building, deploying and testing together in a build definition, after the build succeed, then the pull request can be approved.

For this way, you can use the variable in current build (can add/update variable as Marcote said)

If you must do integration test in a separate build, you can set Trigger to Manual in Build validation of Pull Request policy, then you can queue build manually and specify variables’ values (Check Settable at queue time for the variables in build definition)

Upvotes: 0

Marcote
Marcote

Reputation: 3105

You need to add your VSTS variables in the Variables tab.

Another option is to use Powershell to set them if you want to do it in a dynamic fashion using a Powershell script task.

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

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

Upvotes: 1

Related Questions