junit Assert Equals

时间:2018-04-25 12:37:19

标签: selenium-webdriver junit

问题:进行比较时,我得到一个失败的跟踪错误,但预期和实际结果是一样的。我首先获取字符串的输出,从eclipse中返回的控制台复制,并使用该字符串作为精确比较。有涉及新线路时是否存在问题?

@Test
public void testErrorPage() throws InterruptedException{
    // Optional, if not specified, WebDriver will search your path for chromedriver.
    System.setProperty("webdriver.chrome.driver","C:\\Users\\HASANK\\Desktop\\tEST\\chromedriver.exe");

    ChromeOptions options = new ChromeOptions(); 
    options.addArguments("disable-infobars"); 
    WebDriver driver = new ChromeDriver(options);

    driver.get("http://thisisatest.com");
    Thread.sleep(3500);  // Let the user actually see something!

    String  error= driver.findElement(By.className("errorText")).getText();;
    System.out.println(error);

    String expectedTitle = "404\r\n" + 
            "The requested URL was not found on this server.";
  assertEquals(expectedTitle,error);
  driver.quit();
}

从gettext返回的字符串:

  

404

     

在此服务器上找不到请求的网址。

1 个答案:

答案 0 :(得分:2)

最有可能的问题出在这里:"404\r\n":简单地 非常容易获得错误这样的换行符。

所以真正的答案是避免进行精确平等比较。相反,你可能正在做

assertThat(actual, contains("whatever"))

其中contains()将是一个hamcrest匹配器,用于检查“{1}}中在某处是否显示

当然,actual的缺点是,当匹配的字符串“过于通用”时,它可能会导致“误报”。但另一方面:contains()对变化也更加强大。当您进行完全匹配时,此处的标签转换为空格或其他空格/换行符会破坏您的完全匹配。特别是在测试“网络输出”时,您需要健壮。否则,由于输出的细微变化,您会不断更新测试用例。