Как получить доступ к TestContext в Specflow 3.0 [BeforeTestRun] статический хук - PullRequest
0 голосов
/ 12 октября 2019

Я начал использовать Specflow 3.0 для проекта базовых тестов .NET со встроенным MSTest Runner.

Я столкнулся с проблемой при попытке настроить однократное выполнение метода, чтобы сохранить значение токена носителя для всех работающихтесты в Specflow.

Итак, моя идея состояла в том, чтобы создать статический метод [BeforeTestRun] Hook, который выполнял бы HTTP-запрос с заданными учетными данными. Проблема заключается в том, что эти учетные данные хранятся в файле .runsettings, поэтому мне нужен объект TestContext MSTest для доступа к свойству словаря.

В сценарии я вводю TestContext, и он работает нормально, однако я этого не делаюзнать, как получить доступ к этому объекту в статическом методе [BeforeTestRun]. Есть ли шанс создать этот объект самостоятельно и сохранить в статическом свойстве?

TestContext class

Как вы видите, это абстрактный класс, поэтому я предполагаю, что Test Frameworkавтоматически внедряет конкретную реализацию в Scanarios с DI. Как я могу получить эту конкретную реализацию?

Если решения нет, предложите ли вы другой подход, как я могу хранить настраиваемые параметры помимо .runsettings, чтобы я мог получить к ним доступ в статическом методе [BeforeTestRun] без DI?

Спасибо

1 Ответ

1 голос
/ 14 октября 2019

AFAIK Я знаю поведение TestContext в MSTest, вы получаете в виде простого MSTest для каждого теста свой собственный экземпляр TestContext.
То есть вы не можете получить экземпляр для всего testrun.

ЧтоВы можете сделать это, что вы делаете HTTP-запрос в хуке BeforeScenario первого сценария, который выполняется. Там вы можете без проблем добраться до экземпляра TestContext.

...