JBehave と TestNG を一緒に使用する概念実証を作成しようとしています。私がやりたいことは、コードのスレッドの安全性をテストするために、ストーリーを複数のスレッドで同時に実行することです。
私は1つのことだけを行い、与えられた整数値でモジュロ7を計算する単純なクラスを持っています。このクラスの単純な BDD テストを作成しました。JBehave の「はじめに」ドキュメントで説明されているように、BDD テストをセットアップしました。唯一の違いは、私の JUnitStory ファイルでは、JUnit の @Test アノテーションを使用する代わりに、TestNG の @Test アノテーションを使用したことです。
@org.testng.annotations.Test(threadPoolSize = 10, invocationCount = 100, timeOut = 10000)
テストを実行すると、最初の 70 ~ 90% のケースですべてがうまくいき、その後例外が発生し、残りの実行は失敗します
===============================================
Default test
Tests run: 100, Failures: 11, Skips: 0
===============================================
発生する例外は
FAILED: run
java.util.concurrent.RejectedExecutionException
at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:1774)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:768)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:656)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:92)
at org.jbehave.core.embedder.StoryManager.submit(StoryManager.java:203)
at org.jbehave.core.embedder.StoryManager.runningStory(StoryManager.java:138)
at org.jbehave.core.embedder.StoryManager.filterRunning(StoryManager.java:122)
at org.jbehave.core.embedder.StoryManager.runningStoriesAsPaths(StoryManager.java:107)
at org.jbehave.core.embedder.StoryManager.performStories(StoryManager.java:93)
at org.jbehave.core.embedder.StoryManager.runStories(StoryManager.java:81)
....
私は JBehave と TestNG の両方に比較的慣れていないので、これは単なる構成の問題なのか、それとも実際には JBehave のバグなのか疑問に思っていました。