我正在使用Java,Selenium Webdriver和Junit。对Google的标题进行简单的验证,但是当Assertion失败时它会抛出异常我的意思是当标题不匹配时。
代码:
public static void verifyTitle(String expectedTitle) {
//get the title of the page
String actualTitle = Base.getdriver().getTitle();
// verify title
assertThat(actualTitle, equalTo(expectedTitle));
}
我在主要方法中调用:verifyTitle("Hello");
输出:
> Exception in thread "main" java.lang.AssertionError: Expected:
> "Hello"
> but: was "Google" at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20) at
> org.junit.Assert.assertThat(Assert.java:956) at
> org.junit.Assert.assertThat(Assert.java:923) at
> Modules.Help.verifyTitle(Help.java:161) at
> Modules.Help.GUI(Help.java:152) at Modules.Help.main(Help.java:29)
它正在检查一切正确但不确定为什么抛出异常?如何打印消息,如"标题不匹配" 而不是此异常。
答案 0 :(得分:2)
写下这个:
if (!Objects.equals(actualTitle, expectedTitle))
System.out.println("Title doesn't match.");
但你为什么要这样做?
Selenium测试会在不符合预期的情况下自动通知您。抛出AssertError意味着失败,并且失败可以很好地显示给人类。当您使用System.out.println时,您只需打印一些内容,但程序会继续,就像没有错误一样。
答案 1 :(得分:1)
这是JNunit的预期行为!当assert失败时,它将始终抛出异常。以下是方法assertThat的说明:
断言实际满足匹配器指定的条件。如果 不会抛出AssertionError,其中包含有关匹配器的信息 和失败的价值。
您可以尝试/捕获错误然后打印您想要的消息。
try {
assertThat("a", equalTo("a"));
System.out.println("Title matched");
}
catch(Error e) {
System.out.println("Title does not match");
}
答案 2 :(得分:0)
你应该试试try catch,看看这里:http://beginnersbook.com/2013/04/try-catch-in-java/我认为它可以帮助你;)
答案 3 :(得分:0)
只需研究assertThat的javadoc:
断言实际满足匹配器指定的条件。如果没有,则抛出AssertionError,其中包含有关匹配器和失败值的信息。
关键是当你使用JUnit运行时,会捕获异常;并翻译成一些很好的打印输出。所以,当你在JUnit @Test之外工作时;好;那么其他一些代码需要尝试/捕捉...