dbUnit不创建表。XML文件中提供的有限信息也无法解决。我相信可以创建休眠表。
这是我停止使用内存数据库,而是让DBA为每个开发人员提供自己的数据库的原因之一。然后,每个开发人员都使用相同的脚本来使数据库保持最新状态,这些脚本随后将实时运行。这增加了少量的开销(所有开发人员都需要保持其数据库为最新状态),但是这意味着您无需为每次运行而构建数据库,并且可以确保查询在测试中实时运行。
第二个原因是速度。我发现在内存数据库中创建内存比简单地连接到现有数据库要花费更长的时间。
第三个原因是拆卸是无损的(启动擦除数据库)。这意味着我可以在数据库上运行被测SQL,以帮助弄清测试失败的原因。
更新日期:20171115
从那以后,我转向使用 JUnit规则来启动数据库服务器的真实实例,并使用诸如FlywayDB之类的东西来构建数据库(并使用与测试中相同的脚本,由应用程序负责构建数据库)。它比使用预建数据库要慢得多。但是,使用定义明确的微服务(从而减少需要测试的功能)并且非常严格地限制哪些测试可以获取数据库,您可以迁移此类问题并获得始终与实时匹配的本地数据库的优势。
确实,这意味着测试撕毁总是具有破坏性的,但是可以通过放置适当的断点来解决问题。



