1

メソッドのテストに 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

4

1 に答える 1

1

上記の素朴な質問で申し訳ありません。これは、リモート データの読み取りに JSch ライブラリ ルーチンを使用する方法の問題でした。

ここに投稿するだけなので、私のような初心者ユーザーに役立つかもしれません:)

JSch ライブラリが何らかの例外をスローしていましたが、これを適切にキャプチャしていませんでした。呼び出されたメソッドは例外をキャプチャしており、すぐに戻っていました。修正後、正常に動作するようになりました。

于 2012-04-22T19:01:15.583 に答える