java - 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
和设置它。但结果是一样的。@AfterEach
webclient
close
如何在测试套件中激发与运行单个测试相同的行为?
谢谢阅读。
解决方案
推荐阅读
- angular - 使用 nginx 托管两个 Angular 项目时获得 404,一个是父文件夹,另一个是子文件夹
- quarkus - 如何将配置中的集合转换为 Microprofile/Quarkus/Smallrye 中的环境变量
- notepad++ - Notepad++ - 查找和移动行
- node.js - 无法在 Ubuntu 18.04 Bionic 上安装/删除 mongodb-org - “mongodb-org-tools:取决于:mongodb-database-tools 但未安装”
- python - 使用新数据点更新 matplotlib 而不快速删除以前的数据点
- typescript - React Mobx 与 MST:刷新令牌实现逻辑
- android - 如何检查已安装的应用程序android
- selenium - 如何访问 Blazor Xunit 测试用例中的组件实例?
- go - 从哪里获取数据库查询的上下文?
- angular - 如何打开 Accordian 默认打开,根据条件