2
これは初めてですが、私はマルチスレッドJavaプログラム用のJUnitを作成しようとしています。別のスレッドを作成するメソッドをテストするには?
私は以下のような方法があります。どうすればJUnitを書くことができますか?そのような似たような例を指していますか?アドバンスでおかげさまで... !!
public void myMethod(Input input) {
if (!this.isStreamingPaused()) {
ExecutorService publisherThreadPool = getThreadPool();
PublisherThread publisher = new PublisherThread();
publisher.setInputData(input);
publisherThreadPool.execute(publisher);
publisherThreadPool.shutdown();
}
}
public ExecutorService getThreadPool() {
final ThreadFactory threadFactory = new BasicThreadFactory.Builder()
.namingPattern("MyName-%d")
.priority(Thread.NORM_PRIORITY)
.build();
return Executors.newFixedThreadPool(1, threadFactory);
}
セパレートあなたの懸念を。この名前が示すように、単体テストは機能単位を対象とする必要があります。スレッドを生成するクラスに対して1つのテストを行い、スレッドクラス自体に対して2つ目のテストを試してください。 – EJK
EJKに返信してくれてありがとう。私はPublisherThreadスレッドの主な機能のために別々のjunitを書くつもりですが、私はここでどのようにテストできますか、スレッドを生成しているmyMethodのコードブロックを懸念していますか? – user3452558
このようにスレッドプールを作成すると、 'myMethod'を複数回実行できないことに注意してください。エグゼキュータがシャットダウンされているかどうかをチェックし、その場合は新しいインスタンスを作成することもできます。 –