2013-04-18 40 views
1

我試圖創建一個使用JBehave和TestNG在一起的概念驗證。我想要做的是在多個線程中同時運行一個故事,以便測試我的代碼線程安全性。配置JBehave運行多線程TestNG測試

我有一個簡單的類,只做一件事,在給定的整數值上計算模7。我爲這個班級創建了一個簡單的BDD測試。我已經按照JBehave「Getting started」文檔中的描述設置了我的BDD測試。唯一的區別是,在我的JUnitStory文件,而不是使用JUnit的@Test註解,我使用TestNG的

@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,所以我想知道,這可能是SIM卡在配置上有問題,或者它實際上是JBehave中的一個錯誤。

回答

0

難道是線程池已經關閉,你(或JBehave)試圖提交任務嗎?

+0

不知道,但例外將表明。這就是爲什麼我問是否可能只是一個配置問題。 –

0

它在我看來就像你只需要有2個或更多的測試類,並配置你的testing.xml文件以將該包中的所有類作爲一個組來運行。由於TestNG通常會「按類」分配線程(這是默認配置??),因此您需要有多個類,否則它將一次一個內聯地運行全部10個方法調用。