Мне трудно понять и использовать инъекцию зависимости в моей ситуации. Я хочу использовать Пико-контейнер (https://cucumber.io/blog/2015/07/08/polymorphic-step-definitions).
Это моя ситуация ... В настоящее время у меня есть один класс определения шага, который содержит весь мой селен, и который становится слишком большим:
public class StepDefinitions{
public static WebDriver driver; // a driver is returned here from a static Driver Factory Class
LoginPage loginPage = new LoginPage(driver); //Page Object Model(s)
@Before("setup")
@After //screen snapshot
@After("destroy")
@Given //many methods with this tag
@When //many methods with this tag
@Then //many methods with this tag
}
Теперь я хочу иметь один класс, который содержит мой драйвер, POM и хуки:
public static WebDriver driver; //driver is returned from a static Driver Factory Class
LoginPage loginPage = new LoginPage(driver); //Page Object Model(s)
@Before("setup")
@After
@After("destroy")
Другой класс, который содержит мой @Given
, один класс, который содержит мой @When
, и один класс, который содержит мой @Then
Затем мне нужно все правильно подключить, чтобы все классы могли использовать драйвер, ловушки и POM. Cucumber не поддерживает наследование, поэтому лучше использовать интерфейсы или Dependency Injection (Pico Container). Я не знаю, как это сделать, и я изучал в Интернете, я просто не могу обернуть мой бедный мозг вокруг всего этого.