VSTS Visual Studio Набор тестовых переменных среды

Я создаю интеграционные тесты в Visual Studio (2017) для приложений Net Core, созданных на VSTS и развернутых оттуда. Мои проекты являются тестовыми проектами, и прямо сейчас мои строки подключения к развернутому URL-адресу API и база данных жестко закодированы, но я хочу удалить их из кода и поместить на шаг сборки VSTS, который добавляет переменные среды.

Прямо сейчас мои тестовые файлы .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?

То, что мне пока удалось найти в ходе исследования, заключается в том, чтобы щелкнуть правой кнопкой мыши Свойства тестового проекта в разделе Отладка, настроить переменные среды с помощью там ключ и значение.

Затем я изменяю свой тестовый проект, чтобы использовать GetEnvironmentVariable().

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

С другой стороны, в VSTS я пытаюсь найти шаг сборки, который установит переменную в качестве строки подключения. Лучший шаг, который я мог найти, это «Установить переменную».

Однако это не работает для меня. Программа не распознает имя новой переменной, установленной в переменных среды, для запуска.


person as.beaulieu    schedule 23.01.2018    source источник


Ответы (2)


Вам нужно добавить переменные VSTS на вкладке Variables.

Другой вариант — использовать 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

person Marcote    schedule 23.01.2018
comment
Я только что понял, что это новый тестовый проект, прикрепленный к основному решению приложения. Основное решение и приложение находятся там в репозитории и уже строятся через VSTS. Этого интеграционного теста там нет, и почему он не видит ни одной из переменных Envrionment. Пока я жду одобрения моего запроса на вытягивание, есть ли способ настроить переменные для нового кода, которого еще нет в репозитории? - person as.beaulieu; 24.01.2018
comment
Имейте в виду, что те переменные, которые в настоящее время устанавливаются с помощью задачи setvariable, не будут сохраняться на этапах сборки или выпуска. - person MotoWilliams; 24.01.2018

Лучший способ — собрать, развернуть и протестировать вместе в определении сборки, после успешной сборки можно будет утвердить запрос на извлечение.

Таким образом, вы можете использовать переменную в текущей сборке (можно добавить/обновить переменную, как сказал Маркоте)

Если вам необходимо выполнить интеграционный тест в отдельной сборке, вы можете установить для триггера значение Вручную в разделе Проверка сборки политики запросов на вытягивание, после чего вы можете поставить сборку в очередь вручную и указать значения переменных (отметьте Settable в время ожидания для переменных в определении сборки)

person starian chen-MSFT    schedule 24.01.2018