assertjAssert在selenium中无法按预期工作

e5nszbig  于 2021-08-20  发布在  Java
关注(0)|答案(2)|浏览(447)

我目前正在使用cucumber和java开发基于selenium的bdd测试自动化框架。我的框架使用junit,因为junit不支持软Assert,所以我尝试在测试中使用assertjAssert。然而,这些Assert似乎不起作用。让我用下面的代码来解释一下
//检查表单提交的方法

  1. public void ValidateForm(String name, String company, String email, String city, String state, String country, String question)
  2. throws InterruptedException {
  3. ContactName.sendKeys(name);
  4. Company.sendKeys(company);
  5. Email.sendKeys(email);
  6. City.sendKeys(city);
  7. browserAction.selectFromDD(State, state);
  8. browserAction.selectFromDD(Country, country);
  9. Questions.sendKeys(question);
  10. SubmitButton.click();
  11. Thread.sleep(4000);
  12. }
  13. // Method to check form landing page
  14. public void CheckFormSubmission() {
  15. assertThat(driver.getTitle().contains("Thank you"));
  16. }

}
可以看出,validateform()方法提交表单中的值,checkformsubmission()方法在提交表单后检查登录页的标题。现在,我在应用登录页标题上的Assert,如果它包含“谢谢”,测试应该通过,如果它包含任何其他文本,测试应该失败,并且应该抛出一个异常,该异常最终会在扩展报告中将我的测试标记为失败。
然而,当我的测试继续进行时,这个Assert似乎永远不会起作用,甚至当我没有获得匹配的登录页标题时,测试被标记为已通过,并且没有引发异常。你能帮我理解我在这里可能做错了什么吗?

8fq7wneg

8fq7wneg1#

我认为不是这样的:

  1. assertThat(driver.getTitle().contains("Thank you"));

您应该使用以下选项:

  1. String expectedMsg = "Thank you";
  2. assertThat(expectedMsg).contains(driver.getTitle());
im9ewurl

im9ewurl2#

你把括号放错了。你的代码必须看起来像

  1. assertThat(driver.getTitle()).contains("Thank you");

通常,assertjAssert遵循以下模式

  1. assertThat(value).someAssertion().

这样就可以实现自动完成,这是assertj中的一件好事。

相关问题