我有一些使用spring-batch和hibernate的测试类。我的测试上下文在内存数据库中建立了一个 h2,初始化了 hibernate 会话工厂,它创建了大部分 db 模式,并且还执行了一些特定的 SQL 脚本来设置 Spring Batch(非 ORM)所需的数据库模式对象。Hibernate 只做必要的事情做得很好,但是 spring-batch 初始化脚本并不那么聪明。
我的测试配置使用 h2 嵌入式数据库,因此我可以安全地初始化所有内容,但是,我需要传达给 spring,只为整个集合初始化其余集成基础架构(例如 hbm 会话工厂和 spring-batch 模式)正在运行的测试。
我的单元测试全部单独运行,但是测试 2 到 N 在测试整个包时失败,因为它们重复执行相同的 db 模式初始化,并且在 (db) 对象上死亡已经存在错误。
我希望为整个集成测试集合初始化一个应用程序上下文,然后将特定测试的详细信息配置委托给 MyTest-context,但在运行单个集成测试时仍然初始化主应用程序上下文。
我有一组通用的 spring 配置文件,它们被导入到测试上下文中,以初始化测试应用程序服务所需的基础设施。问题来自运行包中的所有测试等。测试系统多次调用相同的初始化。
我希望这是一个非常常见的问题,并且我忽略了 spring 或 JUnit 文档中的一个细节。