测试中的奇怪上下文行为

时间:2016-07-19 19:32:41

标签: java spring maven junit

我正在尝试在我的测试用例中使用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...
    }

}

1 个答案:

答案 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>