Обязательный отказ от ответственности: я новичок в 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.Я посмотрел вокруг (я был на весь этот вопрос весь день), и на основании того, что я нашел, это должно работать.И я понятия не имею, почему это не так.