Здравствуте, вопрос след плана, есть тесты Nunit которые использует SpecFlow, тест отрабатывает корректно
{
[TestFixture]
[Binding]
public class Login_Test : BaseTest
{
[Given(@"test test")]
public void testTets()
{
LoginSteps steps = new LoginSteps(driver);
steps.Login();
}
}
}
Но, каким образом вынести
LoginSteps steps = new LoginSteps(driver);
выше тестов, поскольку дальше классы When, Then и в каждом из них инизиализировать шаги не хочется
По сути у меня все тоже самое, если речь о тестах Nunit ранее в одном классе перед всеми действиями инициализировались шаги и все ок. Сейчас же SpecFlow делит все на отдельные классы, обернуть все это в единый класс, как я понял нельзя, чтобы перед всем этим делом инициализировать шаги, работает только если в каждом классе это делать, но это неправильно
А можно пример? меня только интересует как из Given получить собственно steps.Login(); исходя из того, что я наследуюсь от BaseTest где в методе setUp лежит
LoginSteps steps = new LoginSteps(driver);
Здесь проблема больше понимания мною c#, нежели фреймворков
Лучше Login() положить в PageObject class. И вызывать уже из него из Steps класса.
С использованием SpecFlow у тебя появляется еще один слой. Новая структура должна быть следующая - Feature, Steps, который содержит в себе ссылки на PageObjects. Именно такая структура у меня в проекте, на который я дал ссылку. Там у меня есть класс - Hooks, где есть методы с аннотациями [BeforeScenario] and [AfterScenario], эти методы вызываются перед и после каждого сценария и там запускается и останавливается Driver и помещается в ObjectContainer, что позволяет использовать Dependency Injection в Step классах.
По моему мнению (может не совсем правильно), для каждого PageObject класса надо использовать свой Step class.