我有一些利用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”?
原文链接:https://www.f2er.com/spring/531726.html>为什么不只是在您的sql脚本中添加“if not exists”?