我正在使用JUnit和Selenium进行一些浏览器测试,并且需要使用多个WebDrivers运行相同的测试。为此,我正在使用JUnit参数化,因此我可以在运行时传入任意数量的WebDrivers并为每个驱动程序运行完整的测试类。
每个驱动程序都应该在不再需要时调用.quit()。理想情况下,会有一个@AfterParameter方法注释,在每组参数完成测试时调用。在没有这样的注释的情况下,最简单的方法是避免要求测试编写者在他们的测试中添加大量样板吗?
这是我目前所拥有的:
@Parameters(name = "{0}")
public static Collection<Object[]> config() throws IOException {
return SeleniumCore.getConfig();
}
private static WebDriver driver;
private static Collection<WebDriver> oldDrivers = new ArrayList<>();
public TestingClass(String name, SeleniumTestParameters params) {
// Stores old open drivers to be closed down at the end of testing.
if (TestingClass.driver != null) {
oldDrivers.add(driver);
}
TestingClass.driver = params.getDriver();
}
@AfterClass
public static void afterClass() {
for (WebDriver oldDriver : oldDrivers) {
oldDriver.quit();
}
driver.quit();
}
它允许存储旧的驱动程序,直到整个类被拆除,并且它正常工作。但是,它还需要构造函数和afterClass方法中的额外样板,以及另外一条信息。是否可以清理它?
答案 0 :(得分:1)
即将发布的(未发布的)JUnit版本4.13支持@AfterParam
和@BeforeParam
:https://github.com/junit-team/junit4/pull/1435