为什么在 Spring JUnit 测试中为每个测试方法初始化和创建一个新的 ApplicationContext?
Why in Spring JUnit test a new ApplicationContext is initialized and created for each test method?
我在Spring学习单元测试,有以下疑问
为什么要为每个测试方法初始化并创建一个新的ApplicationContext?
为什么 Spring 每个测试方法都需要一个新的 ApplicationContext 而不是重复使用在执行任何方法之前创建的相同 ApplicationContext?
- 不需要每次都创建新的
ApplicationContext
。
您所要做的就是在测试中使用相同的位置属性 类:
@ContextConfiguration(locations = "classpath:test-context.xml")
Spring 通过位置属性缓存应用程序上下文,因此如果相同的位置第二次出现,Spring 使用相同的上下文而不是创建新的上下文。
- 可以参考link:NoBlogDefFound: Speeding up Spring integration tests.
这取决于您如何设置测试。如果您使用 @SpringJUnit4ClassRunner
和 @ContextConfiguration
,那么 Spring 将缓存现有的 ApplicationContext
并重新使用它们。
您可以将上下文标记为脏以防止重复使用。
如果您创建自己的 ApplicationContext
,则需要实施自己的 reuse/caching 策略。
我在Spring学习单元测试,有以下疑问
为什么要为每个测试方法初始化并创建一个新的ApplicationContext?
为什么 Spring 每个测试方法都需要一个新的 ApplicationContext 而不是重复使用在执行任何方法之前创建的相同 ApplicationContext?
- 不需要每次都创建新的
ApplicationContext
。 您所要做的就是在测试中使用相同的位置属性 类:
@ContextConfiguration(locations = "classpath:test-context.xml")
Spring 通过位置属性缓存应用程序上下文,因此如果相同的位置第二次出现,Spring 使用相同的上下文而不是创建新的上下文。
- 可以参考link:NoBlogDefFound: Speeding up Spring integration tests.
这取决于您如何设置测试。如果您使用 @SpringJUnit4ClassRunner
和 @ContextConfiguration
,那么 Spring 将缓存现有的 ApplicationContext
并重新使用它们。
您可以将上下文标记为脏以防止重复使用。
如果您创建自己的 ApplicationContext
,则需要实施自己的 reuse/caching 策略。