我有几个junit测试
@ContextConfiguration(locations = { "file:../business/src/test/resources/application-context-test.xml",
"file:src/main/webapp/WEB-INF/confA.xml", "classpath:/mvc-dispatcher-servlet-test.xml"})
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
public class ProductContentControllerTest {
...
}
在一个类中,所有的测试都必须在相同的上下文中运行(事实就是如此)。
但是我希望我所有的测试类都是独立的,我本来是假设这是默认行为的,但是当我一起运行所有的测试时,它似乎运行得太快了。
它是如何工作的?应用程序上下文是否只为每个测试类启动一次?
我是不是该补充一下:
@DirtiesContext(classMode= ClassMode.AFTER_CLASS)
在每一个测试类?
谢谢
1条答案
按热度按时间3pmvbmvn1#
Spring在运行测试时默认缓存application context。Spring用于该高速缓存的key由以下内容组成:
缓存的所有细节都可以在文档中找到。
根据我的经验,很少需要使用
@DirtiesContext
来强制Spring重新创建上下文。我没有遇到太多需要它的情况-唯一容易想到的是使用共享缓存管理器。你最好只在你绝对需要它的测试中使用它。如果你在每个测试中都使用
@DirtiesContext
,执行速度会太慢,而且你不会得到任何回报。