我正在使用AbstractTransactionalSpringContextTests来运行spring集成测试。 弹簧上下文仅加载一次,然后运行所有测试。 如果我希望我的测试包含在许多类和包中,我该怎么做呢。
当然,对于我的所有测试(在所有类和包中),spring上下文应该只加载一次,而不是每个类或包加载一次。
答案 0 :(得分:1)
作为AbstractSingleSpringContextTests
的Javadoc(AbstractTransactionalSpringContextTests
的超类之一)声明:
此类将基于上下文密钥缓存上下文:通常是配置位置String数组,用于描述构成上下文的Spring资源描述符。除非测试调用setDirty()方法,否则不会重新加载上下文,即使在此测试的不同子类中也是如此。如果您的上下文构造起来很慢,这是特别有用的,例如,如果您正在使用Hibernate并且加载映射所花费的时间是一个问题。
您的上下文被缓存,因此在同一个类加载器中运行的所有其他测试(即 - 在同一测试运行期间运行的所有其他测试)将使用缓存的上下文。您不需要进行任何额外的设置 - 应该已经为您完成了。如果您对此不确定或希望进行故障排除,只需打开org.springframework的日志记录,您就会看到大量有用的日志记录,有关何时加载上下文,哪个文件,如何;等