首页 > 解决方案 > htmlunit 个人测试通过但在测试套件中运行失败

问题描述

我正在使用 HtmlUnit 来测试一些 SAML SSO 流。我编写了多个测试,并且在单独运行时它们工作正常。当我在测试套件中运行它们或运行所有测试时。只有 1 工作正常,其他失败。问题似乎是,一旦使用请求第一页webclient.getPage('url')并单击按钮以重定向到下一页。点击不会发生。单独运行测试时,它点击正常并且可以正常工作。

我正在使用 htmlunit 版本 2.46.0,如下所示,测试之间共享的唯一静态数据是 URLS 和 USERNAME AND PASSWORD:

private static final String USERNAME = "username";

    private static final String PASSWORD = "password";


public void test1() throws Exception {
try (final WebClient webClient = new WebClient(BrowserVersion.CHROME)) {
            webClient.getOptions().setThrowExceptionOnScriptError(false);
            webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
            webClient.getOptions().setJavaScriptEnabled(true);
            webClient.getOptions().setCssEnabled(false);
            webClient.getOptions().setRedirectEnabled(true);
            webClient.getCookieManager().setCookiesEnabled(true);

            final HtmlPage loginPage= webClient.getPage(URL);
            assertThat(loginPage.getTitleText()).isEqualTo(LOGIN_PAGE_TITLE);

            HtmlButtonInput samlLoginButton = loginPage.getHtmlElementById("test");

            samlLoginButton.click();
            webClient.waitForBackgroundJavaScriptStartingBefore(10000);
            webClient.waitForBackgroundJavaScript(60000);

            HtmlPage nextLoginPage = (HtmlPage) webClient.getCurrentWindow().getEnclosedPage();
            
            assertThat(nextLoginPage.getUrl().toString()).isEqualTo(NEXT_LOGIN_URL);
}
}

public void test2() throws Exception {
//similar to above example
}

当我使用 javawebclient.close()中的资源时,最后会调用资源。

我还需要做些什么吗?

我还尝试在 Junit 中设置@BeforeEach和设置它。但结果是一样的。@AfterEachwebclientclose

如何在测试套件中激发与运行单个测试相同的行为?

谢谢阅读。

标签: javatestingautomationjunit5htmlunit

解决方案


推荐阅读