一组unittest类中的spring应用程序上下文

时间:2017-04-10 15:27:45

标签: spring junit4 applicationcontext

我在同一个包中创建了几个unittest类。所有这些类都只有一个测试用例,并具有相同的注释,如下所示:

@RunWith(SpringJUnit4ClassRunner.class)来 @ContextConfiguration(classes = {TestConfig.class})

当我运行这些测试用例时,我希望每个测试用例都在自己的应用程序上下文中运行。但似乎同一个软件包中的所有测试用例共享一个应用程序上下文,无论是从maven命令行运行,还是在Eclipse中选择要作为junit运行的软件包。

如果我使用TestConfig1,TestConfig2等名称复制TestConfig并使用不同的TestConfig类注释不同的测试类,那么每个测试都将在其自己的上下文实例中运行。

还有其他优雅的方法来实现这个目标吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

这是Spring测试的默认行为。 Spring测试默认缓存测试中的应用程序上下文。这减少了测试执行时间。

我不知道你的用例。如果您有任何污染应用程序上下文的地方(更改由弹簧管理的bean的状态,这会影响后续测试),那么您可以使用@DirtiesContext来注释测试方法。 Spring测试重新加载这些方法的上下文。请参阅以下链接如何使用DirtiesContext。

https://docs.spring.io/spring/docs/current/spring-framework-reference/html/integration-testing.html#testcontext-ctx-management-caching

只在需要时仔细使用此功能,因为这可能会在指数上显示您的测试执行时间。