Ответ 1
Есть ли какие-либо преимущества в использовании одного или другого?
Функционально, нет. Однако fail()
более четко передает намерение и, следовательно, лучше.
При намеренном отказе от тестового примера (например, когда исключение не выбрасывается), я видел, как люди используют как fail(), так и assertTrue (false). Существуют ли какие-либо преимущества для использования одного или другого?
try {
//method call that should throw exception
fail("oops");
} catch (Exception e) {}
против.
try {
//method call that should throw exception
assertTrue("oops", false);
} catch (Exception e) {}
Есть ли какие-либо преимущества в использовании одного или другого?
Функционально, нет. Однако fail()
более четко передает намерение и, следовательно, лучше.
Используйте параметр JUnit expected
в аннотации @Test
@Test(expected = ArithmeticException.class)
public void divisionWithException() {
int i = 1/0;
}
Это не сработает, если не будет выбрано ArithmeticException
.
assertTrue просто вызывает сбой.
ИМХО fail() проще и понятнее.
Оба могут использоваться (хотя fail
лучше, потому что это действительно предназначено), но поскольку вы используете JUnit, вместо этого вы можете использовать @Test(expected=MyException.class)
.
Используйте fail
, иначе кто-то посмотрит на ошибку в журнале и подумает: "Что false, что должно быть правдой".