JUnit 4学習(二)異常と無視テスト
2220 ワード
1.異常テスト:
異常テストはJUnit 4における最大の改善である.従来の例外テストでは、例外を投げ出すコードにtryブロックを入れ、tryブロックの末尾にfail()文を追加します.たとえば、このメソッドは、0で除去されたArithmeticExceptionをテストします.
public void testDivisionByZero() {
try {
int n = 2 / 0;
fail("Divided by zero!");
}
catch (ArithmeticException success) {
assertNotNull(success.getMessage());
}
}
この方法は見苦しいだけでなく、テストに合格しても失敗しても、実行されないコードがあるため、コードオーバーライドツールに挑戦しようとします.JUnit 4では、例外を放出するコードを作成し、注釈を使用して例外が予想されることを宣言できます.
@Test(expected=ArithmeticException.class)
public void divideByZero() {
int n = 2 / 0;
}
この例外が放出されていない(または異なる例外が放出されている)場合、テストは失敗します.ただし、例外の詳細メッセージやその他のプロパティをテストする場合は、旧式のtry-catchスタイルを使用する必要があります.
2.テストは無視できます。
テストの実行時間が非常に長いかもしれません.このテストはより速く実行されるべきではなく、根本的に複雑または遅い作業をしているということです.リモート・ネットワーク・サーバにアクセスする必要があるテストは、通常、このクラスに属します.クラスのテストを中断する可能性のあることをしない場合は、コンパイル-テスト-デバッグサイクルを短縮するために、実行時間の長いテスト方法をスキップします.あるいは、制御範囲を超えたために失敗したテストかもしれません.例えば、W 3 C XIncludeテストキットは、JavaがまだサポートしていないUnicode符号化の自動認識をテストします.赤い波の線を常に見つめる必要はありません.このようなテストは@Ignoreと注釈できます.以下に示します.
// Java doesn't yet support
// the UTF-32BE and UTF32LE encodings
@Ignore public void testUTF32BE()
throws ParsingException, IOException, XIncludeException {
File input = new File("data/xinclude/input/UTF32BE.xml");
Document doc = builder.build(input);
Document result = XIncluder.resolve(doc);
Document expectedResult = builder.build(new File(outputDir, "UTF32BE.xml"));
assertEquals(expectedResult, result);
}
テスト実行プログラムは、これらのテストを実行しませんが、これらのテストがスキップされたことを示します.
でも気をつけてね.これらのテストを最初に作成するには、一定の理由がある可能性があります.これらのテストを永遠に無視すると、テストを望むコードが中断され、そのような中断が検出されない可能性があります.テストを無視することは、問題の真の解決策ではなく、適切な方法にすぎません.