Игнорировать сбой утверждения в тестовом файле (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