为什么SpringJUnit4ClassRunner不能与surefire parallel =方法一起使用?

时间:2014-11-12 09:01:31

标签: java spring junit maven-3 maven-surefire-plugin

为什么在使用surefire设置parallel=methods时,我的测试会抛出随机异常?

1 个答案:

答案 0 :(得分:7)

这是因为JUnit每个测试类只创建一个Runner实例,在使用parallel=methods时由多个线程使用。 SpringJUnit4ClassRunner只创建一个TestContextManager,它将测试实例存储在实例字段中,因此它不是线程安全的。

当你使用parallel=classes时,一切都应该没问题,因为JUnit会为每个帖子创建一个专用TestContextManager的跑步者。

我已经提交了一个错误:https://jira.spring.io/browse/SPR-12421