1

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 のバグなのか疑問に思っていました。

4

2 に答える 2

0

スレッドプールがシャットダウンされ、あなた (または JBehave) がそれにタスクを送信しようとしている可能性がありますか?

于 2013-04-19T03:25:47.060 に答える