マルチスレッドサーバで単体テストを行う方法は?ユニットテストJavaマルチスレッドソケットサーバ
私は、スレッドクラスを拡張するサーバーがあり、接続されているすべてのクライアントがサブスレッドになると仮定します。このサーバーはsocket apiを使用して新しいクライアントを受け入れます。
このサーバーで単体テストを行う良い方法はありますか? 単体テストは何をカバーするべきですか? どのようにクライアントをシミュレートするのだろう。
アップデート: 私はgithub
マルチスレッドサーバで単体テストを行う方法は?ユニットテストJavaマルチスレッドソケットサーバ
私は、スレッドクラスを拡張するサーバーがあり、接続されているすべてのクライアントがサブスレッドになると仮定します。このサーバーはsocket apiを使用して新しいクライアントを受け入れます。
このサーバーで単体テストを行う良い方法はありますか? 単体テストは何をカバーするべきですか? どのようにクライアントをシミュレートするのだろう。
アップデート: 私はgithub
回答に私のコードを共有することを決めたのJMeterです。ここをクリックしてくださいJava sockets - How to simulate multiple clients。
注::機能テストを作成しようとするが、その前にクラスの単体テストを行う必要があります。機能テストの前には本当に重要なステップです。
ユニットテストを行うとフィードバックが速くなり、デバッグもずっと簡単になります。 – louisgab
統合テストではなく純粋な単体テストについては、TestNGを使用してマルチスレッドテストを実行できます。
@Test(threadPoolSize = 5, invocationCount = 10, timeOut = 1000)
public void multithreadedTestMethdo(){
....
}
JMeterは、複数の同時クライアントとそのアプリケーションサーバー上で何が起こっているかを知るために、サーバにリンクされているプロファイラをシミュレートします。
jmeterにはalternativesがありますが、テストしませんでした。プロファイラは、jdk内にあるjconsoleにすることができます。
このようなテストスイートには、古いjunitで十分です。 AtomicIntegerを宣言してエラーをカウントします。 初期化メソッド(@Beforeでアノテーションされている)から、サーバーでスレッドを開始します。 各テストメソッド(@Testの注釈付き)から、クライアントを表す複数のスレッドを開始し、各スレッドへの結合操作を実行します。 エラーが発生した各クライアントとサーバーは、詳細な診断を出力し、エラーカウンタを増加させて終了します。
また、モックを調べて、クラスが「踊っている」ことを確認します。私はmockitoをお勧めします。
HTTP /プレーンソケットとはどんなサーバーですか?少し質問を拡大してください –
右、プレーンソケット。 – Jun