Ваш вопрос, похоже, является разницей между "Отказом" и "Ошибкой", поскольку оба заканчивают тем, что выдают Исключение.
"Отказ" - это место в вашем тесте, где что-точто вы ожидаете, не произойдет.В тесте, подобном следующему:
TestedObject testedObject = new TestedObject(); // This is the object we test
boolean something = testedObject.computeSomething(); // The tested method
Assert.assertTrue("Something should be true", something);
// following of the test
Если результат ваших вычислений (переменная'thing ') неверен, это означает, что метод computeSomething работает, но не так, как ожидалось;это «провал».Возможно, причиной является логическая ошибка в методе.
Если метод computeSomething () выдает непредвиденное исключение (NPE в вычислении или что-то еще), то это также означает, что метод не работает, но потенциальноболее «жестоким» образом (отсутствует зависимость, угловой случай, который не обрабатывается и т. д.).В методе должна быть некоторая обработка исключений.Это будет называться «Ошибка» на языке JUnit.
Теперь в обоих случаях это означает, что метод не работает, и будет выдано исключение (либо вашим кодом, либо Assert.assertXXX).методы) и пойман TestRunner.Также нередко просто сказать в обоих случаях, что «тест не пройден»;потому что важно то, что в TestedObject нужно выполнить некоторую работу, чтобы вернуть зеленую полосу.
Конечно, иногда вы хотите проверить, что ваш код на самом деле выдает исключение, поэтому вы должны написать что-тонапример:
TestedObject testedObject = new TestedObject(); // This is the object we test
try {
// The tested method, that is expected to throw an Exeption when given null
boolean something = testedObject.computeSomething(null);
Assert.fail("The computation should have failed");
} catch (IllegalArgumentException e) {
// Pass - This is the expected behavior
}
В этом случае создание исключения не должно вызывать ни ошибок, ни ошибок;наоборот, если выбрано исключение , а не , проверка должна провалиться.