Сейчас мы пишем новый набор тестов, используя Selenium 2 (Webdriver) и TestNG . В наших тестах используется шаблон Page Object , и мы очень довольны тем, как все выглядит до сих пор. Однако в наших тестах мы столкнулись с проблемой проектирования и, похоже, не смогли найти для нее хорошего решения.
Позвольте привести пример. Вот наш LoginTestCase:
public class LoginTestCase extends MyTestCase {
@BeforeTest
public void login() {
HomePage homepage = PageFactory.initElements(getDriver(), HomePage.class);
LoginPage loginPage = homepage.login();
DashboardPage dashboardPage = loginPage.loginUser("username", "password");
}
}
Мы хотели бы расширить наши тесты, которые требуют входа пользователя из этого теста.
В идеале мы могли бы написать что-то вроде этого:
public class DashboardTestCase extends LoginTestCase {
@Test
public void testDashboard(DashboardPage dashboardPage) {
...
}
}
На данный момент пользователь находится на DashboardPage
, и единственное, что нужно, - это объект той страницы, который был создан в LoginTestCase
.
Я знаю, что очевидным решением является сохранение этого объекта в переменной (в LoginTestCase
), к которой затем будут обращаться дочерние тестовые случаи. Однако это выглядит очень уродливо и может привести к неправильному использованию этой переменной.
Есть ли лучшее решение для этого или некоторого шаблона, который решает эту проблему дизайна?