为什么在使用surefire设置parallel=methods
时,我的测试会抛出随机异常?
答案 0 :(得分:7)
这是因为JUnit每个测试类只创建一个Runner实例,在使用parallel=methods
时由多个线程使用。 SpringJUnit4ClassRunner
只创建一个TestContextManager
,它将测试实例存储在实例字段中,因此它不是线程安全的。
当你使用parallel=classes
时,一切都应该没问题,因为JUnit会为每个帖子创建一个专用TestContextManager
的跑步者。
我已经提交了一个错误:https://jira.spring.io/browse/SPR-12421