配置JBehave以运行多线程测试



我正在尝试创建一个使用JBehave和TestNG的概念验证。我想做的是,在多个线程中同时运行一个故事,以测试我的代码的线程安全性。

我有一个简单的类,它只做一件事,计算给定整数值的模7。我为这个类创建了一个简单的BDD测试。我已经按照JBehave"入门"文档中的描述设置了我的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都比较陌生,所以我想知道这是否只是一个配置问题,或者它实际上是JBehave中的一个错误。

可能是线程池已关闭,您(或JBehave)正试图向它提交任务?

在我看来,您只需要有2个或更多的测试类,并配置您的testing.xml文件以运行该包中的所有类作为一个组。因为TestNG通常"按类"分叉线程(这是默认配置?? ?),所以你需要有多个类,否则它会内联地运行所有10个方法调用,每次一个。

最新更新