Доступ к TestContext в классе привязки шага SpecFlow

Можно ли получить доступ к MSTest TestContext из класса привязки шага SpecFlow (1.7.1)? В сгенерированном коде файла функций есть метод FeatureSetup, который принимает TestContext в качестве аргумента, но, по-видимому, ничего с ним не делает.


person DevDumbBlind    schedule 07.09.2011    source источник


Ответы (3)


Я нашел способ передать параметры в TestContext, а затем получить к ним доступ из SpecFlow.

Добавив [TestClass], у которого есть свойство TestContext, и пометив его метод AssemblyInit () как [AssemblyInitialize], он будет инициализирован раньше, чем запускать тесты, и MSTest сможет заполнить TestContext.

{
    [TestClass]
    public class InitializeTestContext
    {
        public static TestContext Context { get; private set; }

        [AssemblyInitialize]
        public static void AssemblyInit(TestContext context)
        {
            Context = context;
        }
    }
}

А затем можно получить к нему доступ из моего класса BaseSteps:

{
            public abstract class BaseSteps : TechTalk.SpecFlow.Steps
            {
                public string GetTestEnvironment()
                {
                    TestContext testContext = InitializeTestContext.Context;

                    string testEnvironment = testContext.Properties["Environment"].ToString();

                    return testEnvironment;
                }
            }
}
person sige    schedule 06.02.2017
comment
Чувак! Я так долго пытался в этом разобраться ... Такое простое и хорошее решение! Большое спасибо. (было бы +25, если бы я мог: D). Также через 6 лет после первоначального вопроса, ха-ха. - person JCisar; 11.05.2017
comment
Я создал для этого пакет nuget, если вы хотите это проверить: nuget.org/packages /SpecFlow.MSTest.TestContext - person JCisar; 13.05.2017


Далее к ответу Валентина. Вот пример генератора тестов, который будет добавлен в контекст теста. . Его из той же группы Google.

Гаспар Надь сказал, что это может быть добавлено к провайдеру, который поставляется в specflow.

Итак, чтобы ответить на вопрос ОП, да, это возможно.

person Roberto Bonini    schedule 13.09.2016