2013-04-18 35 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个方法调用。