メソッドのテストに Junit 4.x を使用しています。
テスト中のメソッドは、IllegalArgumentException をスローすると予想されます。メソッドは、内部的にリモート ssh 接続にスクリプトを実行させ、結果をキャプチャするか、例外をスローするブロッキング メソッド (同期) です。
これをテストするために、JUnit テスト コードを以下のように記述しました。
@Test (timeout=3000, expected=IllegalArgumentException.class)
public final void testReadFolderWithInvalidFolder() {
final String folder = "/home/rv_nath/xxxyyyZzz";
rfc.readFolder(folder);
}
上記の testReadFolder() メソッドは、予想される例外がスローされるかどうかを確認する前に、最大 3 秒 (タイムアウト = 3000 の場合) 待機することになっています)。しかし、すぐに戻り、テスト ケースが失敗したことを報告します。
上記の何が問題なのかを理解するのを手伝ってくれる人はいますか。詳細が必要な場合は、お知らせください。
Junitの失敗トレースは次のとおりです...
java.lang.AssertionError: IllegalArgumentException をスローする必要がありました。org.junit.Assert.fail(Assert.java:91) で com.comviva.remotefilebrowser.server.RemoteFileCaseTest.testReadFolderWithInvalidFolder(RemoteFileCaseTest.java:94) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) で sun.reflect .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)、java.lang.reflect.Method.invoke(Method.java:616) で org.junit.runners。 model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) で org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) で org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java) :41) org.junit.internal で。
Junit4 タイムアウトの実装にバグがありますか、それともここで何か不足していますか?
テスト ケースをデバッグ モードで実行すると (そしてそれをトレースすると、リモート実行を完了するのに時間がかかりますが、確実に機能し、テスト ケースはパスします)。この問題は、テスト ケースをデバッグするのではなく、実行することを選択した場合にのみ発生します。
ありがとう、よろしく、 RV