Как передать аргумент бегунку спецпотока? - PullRequest
0 голосов
/ 13 февраля 2019

Обязательный отказ от ответственности: я новичок в specflow и c #.Спасибо за ваше понимание.

В настоящее время я преобразую среду тестирования огурцов из java в c #.

Моя текущая настройка такова.У меня есть файл окружения, в котором я определил несколько сред (dev, qa, prod и т. Д.).каждая среда имеет уникальный идентификатор.То, что я делал в своей инфраструктуре java, состояло в том, чтобы передать идентификатор среды, которую я хочу использовать, через вызов командной строки Maven, а моя инфраструктура позаботится об остальном (прочитайте идентификатор, используя System.getProperties("propertyName"), найдитефайл и читать переменные, если этот конкретный идентификатор).Это позволило бы мне подключить мою инфраструктуру тестирования к Jenkins и сделать разные сборки для работы в разных средах, просто передав другой идентификатор с помощью командной строки.

Теперь у меня возникли некоторые проблемы с поиском того, какуправлять этим с помощью specflow.Я имею в виду, у меня нет проблем с чтением моего файла, но я до сих пор борюсь с тем, как передать в поток данных идентификатор среды, которую я хочу использовать, чтобы я мог забрать его из своей среды.Это также предполагает, что я планирую загрузить это в TFS, чтобы можно было запускать свои тесты оттуда (аналогично тому, что я делал в Jenkins).

Цель здесь - избежать необходимости вручную менять инесколько файлов среды.

В случае, если это невозможно, есть ли хорошие альтернативы?

Спасибо.

РЕДАКТИРОВАТЬ: Хорошо, так что некоторые мои коллеги предложиличто я использую настройки теста.В моем локальном решении я могу создать 1 файл для каждой среды, которая мне нужна.Затем я, TFS, могу передать сборку с переопределенными значениями, которые будут отлично работать.

Итак, я создал файл dev.runsettings, и из того, что я собрал, мне нужно получить доступ к его содержимому с помощью следующего:

using Microsoft.VisualStudio.TestTools.UnitTesting;

TestContext context = ScenarioContext.Current.ScenarioContainer.Resolve<TestContext>();

Я запускаю это методом [BeforeScenario].Тем не менее, он выдает исключение.

Impossible to create an instance of Microsoft.VisualStudio.TestTools.UnitTesting.TestContext, because it is an abstract class

Я нашел этот поток на github specflow об этой проблеме, и кажется, что он должен быть решен, но я все ещеполучаю ошибку.

Есть мысли?

EDIT2: ОК. Итак, я понял, что, поскольку я использую Nunit 3, мне не нужно использовать библиотеку Microsoft.VisualStudio.TestTools.UnitTesting, яможно использовать библиотеку Nunit.framework напрямую.что приводит меня к новой проблеме.Мой TestContext.Parameters не заселяется.Я проверил, что мой файл настроек выполнения действителен, и что он выбран и проверен в тестовом меню VS 2017.Но параметры не читаются и становятся доступными в TestContext.Я посмотрел вокруг (я был на весь этот вопрос весь день), и на основании того, что я нашел, это должно работать.И я понятия не имею, почему это не так.

...