14

テストケースを意図的に失敗させた場合(たとえば、例外がスローされなかった場合)、人々が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) {}
4

5 に答える 5

21

どちらかを使用することに利点はありますか?

機能的にはありません。ただし、fail()意図をより明確に伝えるため、より優れています。

于 2012-10-17T16:55:44.123 に答える
13

アノテーションでJUnitのexpectedパラメーターを使用する@Test

@Test(expected = ArithmeticException.class)  
public void divisionWithException() {  
    int i = 1/0;
}  

ArithmeticExceptionがスローされない場合、これは失敗します。

于 2012-10-17T16:54:51.987 に答える
5

assertTrueは呼び出しが失敗するだけです。

IMHO fail()は、より単純で明確です。

于 2012-10-17T16:55:04.717 に答える
3

を使用failします。そうしないと、誰かがログの失敗を見て、「何が間違っているのか、それは本当であるはずだ」と考えるでしょう。

于 2012-10-17T16:55:27.927 に答える
1

両方を使用できますが(実際failにはそれが意図されているため、より優れています)、JUnitを使用しているため、@Test(expected=MyException.class)代わりに使用できます。

于 2012-10-17T16:55:07.200 に答える