SpringJUnit4ClassRunner在JUnit测试用例结束时不会关闭应用程序上下文。

6 浏览
0 Comments

SpringJUnit4ClassRunner在JUnit测试用例结束时不会关闭应用程序上下文。

在我的JUnit 4测试中,我使用SpringJUnit4ClassRunner,代码如下:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:/test-context.xml"})
public class MyTest {
    @Autowired
    private ConfigurableApplicationContext context;
    @Test
    public void test1() {
    . . .
    }
    @Test
    public void test2() {
    . . .
    }
    . . .
}

然而,在测试用例结束时,应用程序上下文并未关闭。我希望在测试用例结束时关闭应用程序上下文(而不是在每个单独的单元测试结束时)。

到目前为止,我想到了以下解决方法:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:/test-context.xml"})
public class MyTest {
    @Autowired
    private ConfigurableApplicationContext context;
    private static ConfigurableApplicationContext lastContext;
    @After
    public void onTearDown() {
        lastContext = context;
    }
    @AfterClass
    public static void onClassTearDown() {
        lastContext.close();
    }
    @Test
    public void test1() {
    . . .
    }
    @Test
    public void test2() {
    . . .
    }
    . . .
}

是否有更好的解决方案?

0