我正在尝试在我的测试用例中使用SpringJUnit4ClassRunner。在只有一个@Test方法的测试中,它完美地运行。 但是在使用几种@Test方法的测试中,它有时会起作用,有时我会得到NPE或IllegalStateException。 我没有使用@DirtiesContext注释和不同的classMode模式尝试过它。
只有当我构建maven项目时才会发生这种情况。当我从IDE运行此测试时 - 一切正常。
P.S。我的背景是无国籍的。
@RunWith(SpringJUnit4ClassRunner.class)
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
@ContextConfiguration(classes = {TestConfiguration.class})
@ActiveProfiles("dummy")
public class TestFieldMapping {
@Autowired
private ApplicationContext context;
@Test
public void test1() {
context.getBean...
}
@Test
public void test2() {
context.getBean...
}
@Test
public void test3() {
context.getBean...
}
}
答案 0 :(得分:1)
这是我发现的:
SpringJUnit4ClassRunner与多线程模式不兼容
https://jira.spring.io/browse/SPR-12421
我通过为sunfire
设置parallel = classes来解决它 <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<parallel>classes</parallel>
<reuseForks>true</reuseForks>
<threadCount>1</threadCount>
</configuration>
</plugin>