私はこのようないくつかのテストがあります:
_@Test
public void test01()
{
Position p = getPositionAt('a', 1);
assertNotNull("a1 exists", p);
assertNotNull("figure exists a1", p.getFigure());
p = getPositionAt('a', 2);
assertNotNull("exists a2", p);
assertNull("figure exists a2", p.getFigure());
p = getPositionAt('b', 1);
assertNotNull("exists b1", p);
assertNull("figure exists b1", p.getFigure());
}
_
テストの実行中に必要なのは、各アサートメッセージを標準出力に出力してから、アサートの結果を出力することです。
これは、テストクラスの形式が必要です。
_a1 exists -success
figure exists a1 -success
exists a2 -success
figure exists a2 -succcess
exists b1 -succcess
figure exists b1 -failed
_
しかし、それを行う方法は?私はJUnitを使って作業するのはかなり新しいので、見当がつきません。 runners
とsuites
を使用する方法はありますか?または、assertSuccess()
、assertFailed()
メソッドが存在しますか?ヒントをありがとう。
まず、1つではなく2つの問題があります。アサーションが失敗すると、AssertionError
例外がスローされます。これにより、このポイントを超えるアサーションがチェックされなくなります。これに対処するには、 ErrorCollector を使用する必要があります。
第二に、私はこれを行うためにJUnitに組み込まれた方法があるとは思わない。ただし、アサーションをラップする独自のメソッドを実装できます。
public static void assertNotNull(String description, Object object){
try{
Assert.assertNotNull(description, object);
System.out.println(description + " - passed");
}catch(AssertionError e){
System.out.println(description + " - failed");
throw e;
}
}
すべてのassertXXXメソッドには、エラー時に文字列を表示できるフォームがあります。
assertNotNull("exists a2", p); // prints "exists a2" if p is null
成功時にメッセージを出力することに特別な価値はありません。
[〜#〜] edit [〜#〜]
Junitは通常、2つの形式のアサートを提供します。上記の例を実行するには、2つの方法のいずれかでnull値をテストできます。
assertNotNull(p)
または
assertNotNull("my message on failure", p)
フレームワークは、他の作業を必要とせずにエラーメッセージを出力します(フレームワークによって提供されます)。
例外をテストするには、次のパターンを使用します。
try{
someCall();
catch(Exception e){
fail(): // exception shouldn't happen, use assertTrue(true) if it should
}
繰り返しますが、メッセージを追加するこれらのメソッドのバージョンがあります
[〜#〜] api [〜#〜] を確認します
最後の手段の1つは、各アサートを対応するSystem.out.println
とペアにすることですが、明らかに理想的ではありません。それでも、他のすべてが失敗した場合、問題を解決します。