我有一些利用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”?
>为什么不只是在您的SQL脚本中添加“if not exists”?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。