2011-07-04 25 views
1

私は小さなプロキシサーバープログラムをテストしています。私の問題は、テストによって特定のポートへのプロキシが開始されることです。私はいつも別のポートを使うことができ、同じポートで2台のサーバーがリッスンします。 jUnit(Eclipseで)テストを次々と実行させるが、同時に実行させることはできないのですか?jUnit - 同時にテストを実行することはできますか?

答えて

1

JUnitは、何か特別なことをしない限り、一度に1つのテストしか実行しません。あなたのケースで起こりそうなことは、2回目のテストが実行される前に、1回のテストで開始されたプロキシが停止していないか、または時間内に停止していないことです。

編集:あなたのコメントに応じて、これを処理するいくつかの方法があります。一つはクラスと同じパッケージにテストを置くことです。そうすれば、ソケットを閉じてそのメソッドをテストから呼び出すようなパッケージプライベートメソッド(publicプライベート宣言も何も宣言されていないということです)を使うことができますクローズされていますが、公開APIの一部ではありません。

もう一つのオプションは、コンストラクタにソケットジェネレータを渡すことです。本番環境では、1つを渡すのではなく、むしろ内部実装を持っているかもしれませんが、テストではテストコードによって作成されたものを渡し、テストコードはテストの最後にテストコードを閉じます。

+0

興味深い。プロセスを強制終了する方法はありますか?これは宿題です。私たちが実装しようとしているAPIにはシャットダウンがありません。 –

1

私はこの種のソケットを以前から見てきました。別のOSでポートを閉じると、VMよりも時間がかかることがあります。サーバーポートを開くまで、テストをスリープおよび/またはタイムアウトにすることをお勧めします。それは不毛の解決策です、私は知っています。

+3

バインドする前に、ServerSocketで[SO_REUSEADDR](http://download.oracle.com/javase/6/docs/api/java/net/ServerSocket.html#setReuseAddress%28boolean%29)オプションを設定することもできますこれにより、この終了期間をスキップすることができます。それは非常にわずかに危険です。実際の実行システムではやっていないが、テストのためにはうまくいくはずだ。 –

関連する問題