Игнорировать сбой утверждения в тестовом файле (JUnit)

В настоящее время я пишу автоматическое тестирование с использованием 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;
}

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

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

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

Ответы

Ответ 1

Вы можете использовать правило сборщика ошибок 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"));             
  }
}

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

Ответ 2

От Selenium документация:

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

Ответ 3

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

Ответ 4

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