3

アプリケーションにクライアント スレッドとサーバー スレッドがあります。これらのアプリをスタンドアロン アプリとして実行すると、これらのスレッドは適切に通信します。

しかし、クライアントを JUnit として実行し、サーバーをスタンドアロンとして実行すると、クライアント スレッドは数秒以内に終了します。

なぜこんなに違う振る舞いなのか、私にはわかりませんでした。

4

1 に答える 1

8

JUnit ランナーが終了すると、生成されたすべてのスレッドなども強制終了されます (別の JVM インスタンスで実行される可能性が高いため)。

これは、あなたが経験した問題を説明する(かなり古い)記事です(推奨しているGroboUtilsライブラリは、かなり前に放棄されたようです)。もう 1 つは、新しい Java 同時実行フレームワークを使用した最新のソリューションを備えた最近のものです。

後者のソリューションの要点は、エグゼキュータを介してスレッドを実行し、実行結果をFutures. スレッドがタスクを終了するまでブロックし、Future.getJUnit テストを自動的に維持します。このトリックをあなたのケースに適応させることができるかもしれません。

于 2012-04-23T08:26:46.093 に答える