Джунит Assert Equals - PullRequest
       6

Джунит Assert Equals

0 голосов
/ 25 апреля 2018

Проблема: при сравнении я получаю ошибку трассировки ошибки, но ожидаемый и фактический результат совпадают. Сначала я получил вывод строки, скопировал ее из консоли, которая возвращается в 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

Запрошенный URL не найден на этом сервере.

1 Ответ

0 голосов
/ 25 апреля 2018

Скорее всего, проблема здесь: "404\r\n": просто довольно легко получить такие вещи с разрывом строки неправильно .

Таким образом, реальный ответ - избегать таких точных сравнений на равенство. Вместо этого вы могли бы делать

assertThat(actual, contains("whatever"))

где contains() будет сопоставителем подколенного сухожилия, который проверяет, появляется ли "что угодно" где-то в actual.

Конечно, недостатком contains() является то, что он может привести к «ложным срабатываниям», когда соответствующая строка «слишком общая». Но с другой стороны: contains() также намного более устойчив к изменениям. Когда вы делаете точное сопоставление, здесь табуляция превращается в пробел или дополнительный пробел / перевод строки там нарушает ваше точное совпадение. И особенно при тестировании «веб-вывода», вы должны быть надежным . В противном случае вы будете постоянно обновлять свои тестовые наборы из-за незначительных изменений в выводе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...