【发布时间】:2015-01-09 01:36:21
【问题描述】:
当我使用surefire设置parallel=methods时,为什么我的测试会抛出随机异常?
【问题讨论】:
标签: java spring junit maven-3 maven-surefire-plugin
当我使用surefire设置parallel=methods时,为什么我的测试会抛出随机异常?
【问题讨论】:
标签: java spring junit maven-3 maven-surefire-plugin
这是因为 JUnit 只为每个测试类创建一个 Runner 实例,在使用 parallel=methods 时被多个线程使用。 SpringJUnit4ClassRunner 只创建了一个 TestContextManager,它将测试实例存储在实例字段中,因此它不是线程安全的。
当您使用 parallel=classes 时,一切都应该没问题,因为 JUnit 会创建一个运行器,每个线程都有一个专用的 TestContextManager。
我已经提交了一个错误:https://jira.spring.io/browse/SPR-12421
【讨论】: