我在同一个包中创建了几个unittest类。所有这些类都只有一个测试用例,并具有相同的注释,如下所示:
@RunWith(SpringJUnit4ClassRunner.class)来 @ContextConfiguration(classes = {TestConfig.class})
当我运行这些测试用例时,我希望每个测试用例都在自己的应用程序上下文中运行。但似乎同一个软件包中的所有测试用例共享一个应用程序上下文,无论是从maven命令行运行,还是在Eclipse中选择要作为junit运行的软件包。
如果我使用TestConfig1,TestConfig2等名称复制TestConfig并使用不同的TestConfig类注释不同的测试类,那么每个测试都将在其自己的上下文实例中运行。
还有其他优雅的方法来实现这个目标吗?
非常感谢。
答案 0 :(得分:0)
这是Spring测试的默认行为。 Spring测试默认缓存测试中的应用程序上下文。这减少了测试执行时间。
我不知道你的用例。如果您有任何污染应用程序上下文的地方(更改由弹簧管理的bean的状态,这会影响后续测试),那么您可以使用@DirtiesContext来注释测试方法。 Spring测试重新加载这些方法的上下文。请参阅以下链接如何使用DirtiesContext。
只在需要时仔细使用此功能,因为这可能会在指数上显示您的测试执行时间。