如何控制将在运行时生成多少个 JUnit5 测试实例并将单独的 ParameterResolver 应用于每个实例
How can I control how many JUnit5 Test Instances are going to be generated in Runtime and apply separate ParameterResolver to each of the instance
我想像这样使用 Maven 执行 Selenium Grid 测试:
mvn verify-Dtest=BaseTest -Dprop.selenium.server.url=http://localhost:4444/wd/hub
-Dprop.browser=chrome
-Dprop.version=80.0.3987.106
我使用 JUnit5 ParameterResolver 接口将 ChromeDriver 注入到测试构造函数中
@ExtendWith(ChromeRemoteWebDriverParameterResolver.class)
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class MultiBrowserDemoTest {
RemoteWebDriver driver;
public MultiBrowserDemoTest(RemoteDriver driver) {
this.driver = driver.getDriver();
}
@SneakyThrows
@Test
public void testGrid() {
driver.get("https://www.google.com/");
WebElement search = driver.findElement(By.name("q"));
search.sendKeys("JUnit5 extensions");
search.submit();
}
@AfterAll()
void tearDown() {
driver.quit();
}
}
它工作正常。但是我看不到如何实现多浏览器测试执行。
假设我要添加多个浏览器-Dprop.browser=chrome,firefox,opera,ie11
我创建了多个 classes 实现 ParameterResolver 接口。但是 JUnit5 不允许我将它们全部注入到我的测试中 Class。它也不会创建 Test class 的新实例。
我尝试使用 TestInstanceFactory 创建我的测试的新实例 class 并应用 ParameterResolver 接口的单独实现,但它对我不起作用。
最终结果: 我可以 运行 使用 Selenium Grid 在多个浏览器中并行进行相同的测试,并且我只能进行一个测试 Class使用单独的 webdriver 实例化多次。
我想像这样使用 Maven 执行 Selenium Grid 测试:
mvn verify-Dtest=BaseTest -Dprop.selenium.server.url=http://localhost:4444/wd/hub
-Dprop.browser=chrome
-Dprop.version=80.0.3987.106
我使用 JUnit5 ParameterResolver 接口将 ChromeDriver 注入到测试构造函数中
@ExtendWith(ChromeRemoteWebDriverParameterResolver.class)
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class MultiBrowserDemoTest {
RemoteWebDriver driver;
public MultiBrowserDemoTest(RemoteDriver driver) {
this.driver = driver.getDriver();
}
@SneakyThrows
@Test
public void testGrid() {
driver.get("https://www.google.com/");
WebElement search = driver.findElement(By.name("q"));
search.sendKeys("JUnit5 extensions");
search.submit();
}
@AfterAll()
void tearDown() {
driver.quit();
}
}
它工作正常。但是我看不到如何实现多浏览器测试执行。
假设我要添加多个浏览器-Dprop.browser=chrome,firefox,opera,ie11
我创建了多个 classes 实现 ParameterResolver 接口。但是 JUnit5 不允许我将它们全部注入到我的测试中 Class。它也不会创建 Test class 的新实例。
我尝试使用 TestInstanceFactory 创建我的测试的新实例 class 并应用 ParameterResolver 接口的单独实现,但它对我不起作用。
最终结果: 我可以 运行 使用 Selenium Grid 在多个浏览器中并行进行相同的测试,并且我只能进行一个测试 Class使用单独的 webdriver 实例化多次。