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);

} 

テスト実行プログラムは、これらのテストを実行しませんが、これらのテストがスキップされたことを示します.
でも気をつけてね.これらのテストを最初に作成するには、一定の理由がある可能性があります.これらのテストを永遠に無視すると、テストを望むコードが中断され、そのような中断が検出されない可能性があります.テストを無視することは、問題の真の解決策ではなく、適切な方法にすぎません.