微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring,Spring Batch,Hibernate和JUnit以及用于多个集成测试的初始化

我有一些利用Spring-Batch和Hibernate的测试类.我的测试上下文在内存数据库中建立h2,初始化了休眠会话工厂,该工厂创建了大多数db模式,还执行了一些特定的sql脚本来设置spring batch(非orm)所需的数据库模式对象. Hibernate只做必要的事情就做得很好,但是spring-batch初始化脚本并不那么聪明.

我的测试配置使用h2嵌入式数据库,因此我可以安全地对所有内容进行一次初始化,但是,我需要传达给spring,以便对整个集合进行一次初始化其余的集成基础架构(例如hbm会话工厂和spring-batch模式).测试正在运行.

我的单元测试全部单独运行,但是测试2至N在测试整个程序包时失败,因为它们重复执行相同的数据库模式初始化,并且死于(db)对象已经存在错误.

我希望为整个集成测试集合初始化一个应用程序上下文,然后将特定测试的详细信息的配置委派给MyTest-context,但在运行单个集成测试时仍然初始化主应用程序上下文.

我有一组通用的spring配置文件,这些文件被导入到测试上下文中,以初始化测试应用程序服务所需的基础结构.问题来自在程序包中运行所有测试等.测试系统多次调用相同的初始化.

我希望这是一个非常普遍的问题,并且我忽略了spring或JUnit文档中的详细信息.

最佳答案
>认情况下,为测试加载的Spring caches ApplicationContext instances.初始化一个文件的唯一原因是测试使用了不同的上下文文件集,因此需要不同的上下文,或者测试使用了@DirtiesContext annotation.
>为什么不只是在您的sql脚本中添加“if not exists”

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐