【发布时间】:2010-10-10 00:39:39
【问题描述】:
我正在使用 AbstractTransactionalSpringContextTests 运行 spring 集成测试。 spring 上下文只加载一次,然后运行所有测试。 如果我希望我的测试在许多类和包中,我该怎么做。
当然,对于我的所有测试(在所有类和包中),spring 上下文应该只加载一次,而不是每个类或包一次。
【问题讨论】:
标签: java spring junit spring-test
我正在使用 AbstractTransactionalSpringContextTests 运行 spring 集成测试。 spring 上下文只加载一次,然后运行所有测试。 如果我希望我的测试在许多类和包中,我该怎么做。
当然,对于我的所有测试(在所有类和包中),spring 上下文应该只加载一次,而不是每个类或包一次。
【问题讨论】:
标签: java spring junit spring-test
正如AbstractSingleSpringContextTests(AbstractTransactionalSpringContextTests 的超类之一)的 Javadocs 状态:
此类将基于上下文键缓存上下文:通常是配置位置字符串数组,描述构成上下文的 Spring 资源描述符。除非 setDirty() 方法被测试调用,否则上下文将不会被重新加载,即使跨该测试的不同子类也是如此。如果您的上下文构建速度很慢,这尤其有用,例如,如果您使用 Hibernate 并且加载映射所花费的时间是一个问题。
您的上下文已缓存,因此在同一类加载器中运行的所有其他测试(即 - 在同一测试运行期间运行的所有其他测试)都将使用缓存的上下文。您不需要做任何额外的设置 - 应该已经为您完成了。如果您对此不确定,或者希望排除故障,只需打开 org.springframework 的日志记录,您应该会看到大量有用的日志记录,关于何时加载上下文、哪个文件、如何加载;等等
【讨论】: