微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何控制在运行时中将生成多少个JUnit5测试实例,并将单独的ParameterResolver应用于每个实例

如何解决如何控制在运行时中将生成多少个JUnit5测试实例,并将单独的ParameterResolver应用于每个实例

我想像这样使用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注入到Test构造函数

   @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

我创建了多个实现ParameterResolver接口的类。但是junit5不允许我将它们全部注入到我的Test Class中。它也不会创建Test类的新实例。

我试图使用TestInstanceFactory创建我的Test类的新实例,并应用ParameterResolver接口的单独实现,但是它对我不起作用。

最终结果:我可以使用Selenium Grid在多个浏览器中并行运行相同的测试,并且只有一个测试类可以使用单独的Webdriver实例化多次。

解决方法

如果我正确理解了您的情况,那么您需要的是对我们所谓的“参数化容器”(即类似于@ParameterizedTest的东西,但在类级别)的支持,而JUnit中尚不存在木星。

有关详细信息,请参见JUnit Jupiter问题#871#878

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。