【发布时间】:2014-07-01 20:29:27
【问题描述】:
在使用SpringJUnit4ClassRunner 运行 JUnit/Spring 测试期间,负责触发 Hibernate 的 SchemaExport.execute(考虑到 hbm2ddl.auto 已激活)的 Spring 事件是什么?
(考虑到所有这些,我可以拥有多个具有相同上下文配置的测试套件,并且可以缓存 spring 上下文...)
我问这个问题是因为我设置了一个 Spring 监听器(用作数据填充器),如下所示:
@Profile({ Profiles.DEFAULT, Profiles.CLOUD, Profiles.TEST, Profiles.DEV })
@Component
public class BootstrapLoaderListener implements ApplicationListener<ContextRefreshedEvent>, ResourceLoaderAware, Ordered {
private static final Logger log = Logger.getLogger(BootstrapLoaderListener.class);
@Override
public int getOrder() {
return HIGHEST_PRECEDENCE;
}
@Override
@Transactional
public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
initApplication();
}
...
我有两个集成测试套件 (SpringJUnit4ClassRunner),它们共享相同的上下文配置,因此共享相同的缓存应用程序上下文。
但我注意到,当两个测试套件中的第二个运行在第一个之后,上面的应用程序侦听器没有收到通知。
总结一下:
- 第一个测试套件运行(从模式导出创建表和通知应用程序侦听器)
- 第二个测试套件运行(仅创建表但没有通知应用程序侦听器)
【问题讨论】:
标签: spring-test