Я хочу написать тестовые примеры Selenium в JUnit и протестировать свои проекты в нескольких браузерах, и я хотел бы воспользоваться тем, что все драйверы Selenium реализуют один и тот же интерфейс.
Каждый тестовый пример должен выглядеть следующим образомthis:
package fm;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import static org.junit.Assert.*;
public class HomepageTest {
@Test
public void testTitle(WebDriver driver) {
driver.get("http://localhost/");
assertEquals("Foo", driver.getTitle());
}
@Test
public void testSearchForm(WebDriver driver) {
//...
}
}
Переданные реализации WebDriver должны контролироваться где-то централизованно.Возможно, мне придется переопределить некоторые свойства JUnit, и я надеюсь, что это возможно.
Я хочу сделать это таким образом, чтобы избежать двух вещей:
- Повторение кода:Если бы каждый тестовый случай инициализировал все протестированные браузеры в @Before, в тестовом наборе было бы много повторяющегося кода, который трудно поддерживать.
- Скорость набора тестов: если бы я имел централизованный контроль над порядком иПройдя реализации WebDriver, я легко смог открыть, например, Firefox, запустить все тестовые сценарии, закрыть его и открыть следующий браузер.Если бы каждому тестовому сценарию удавалось открывать и закрывать браузеры по отдельности, это увеличивало бы время каждого запуска теста.
У кого-нибудь есть идеи, как мне это сделать?Спасибо.