Игнорировать сбой утверждения в тестовом примере (JUnit) - PullRequest
14 голосов
/ 28 февраля 2011

В настоящее время я пишу тестирование автоматизации с использованием java и selenium rc.

Я хотел бы проверить все содержимое, присутствующее в пользовательском интерфейсе, функция, т.е. ниже:

public String UITest() throws IOException {

    String result="Test Start<br />";

    try {
        openfile(1);
        for (String url : uiMaps.keySet()) {
            selenium.open(url);
            for (String item : uiMaps.get(url)) {                   
                assertEquals(url+" check: " + item, true,selenium.isTextPresent(item));
                result+=url+" check: " + item+" : OK<br />";
            }
        }
    } catch (AssertionError e) {
        result+=e.getMessage();
    }
    result+="Test finished<br />";
    return result;
}

функция предположим, что возвращаемая строка содержит информацию о тестировании.Однако функция остановилась, как только произошла ошибка подтверждения.

Итак, я хочу знать, есть ли способ игнорировать ошибку и продолжать выполнять все проверки утверждений.

Спасибо за любую помощь

Ответы [ 4 ]

18 голосов
/ 01 марта 2011

Можно использовать правило сбора ошибок JUnit 4 :

Правило ErrorCollector позволяет продолжить выполнение теста после обнаружения первой проблемы (например, для сбора все неправильные строки в таблице и сразу сообщать обо всех)

Например, вы можете написать такой тест.

public static class UsesErrorCollectorTwice {
  @Rule
  public ErrorCollector collector= new ErrorCollector();

  @Test
  public void example() {
    String x = [..]
    collector.checkThat(x, not(containsString("a")));
    collector.checkThat(y, containsString("b"));             
  }
}

Сборщик ошибок использует Matcher Hamcrest.В зависимости от ваших предпочтений это положительно или нет.

2 голосов
/ 01 марта 2011

Из Selenium Документация :

Все утверждения Selenium можно использовать в 3 режимах: «assert», «verify» и «waitFor». Например, вы можете использовать «assertText», «verifyText» и «waitForText». Когда «утверждение» не выполняется, тест отменяется. При сбое «проверки» тест продолжится, регистрируя ошибку . Это позволяет одному «утверждению» гарантировать, что приложение находится на правильной странице, за которым следует набор «проверочных» утверждений для проверки значений полей формы, меток и т. Д.

1 голос
/ 01 марта 2011

Я уверен, что вы уже поняли это сами: try-catch должен быть внутри цикла for, а не снаружи;)

0 голосов
/ 28 февраля 2011

Ничего не утверждать в функции. Вместо этого верните say null и пусть тот, кто его вызывает, продолжит работу, но затем потерпит неудачу, если функция вернула null

...