我在 DBUnit 测试中遇到了一个有趣的问题。
我们有一些使用 DBUnit 测试和 xml 数据集进行测试的代码。我在平台之间使用完全相同的数据集和代码文件的测试结果不一致,因此我决定遵循这一路径,因为我将重构 DB Access 类的一部分。
我遇到的问题如下:
- 数据集有 3 条记录与 hbm 文件中定义的某个查询匹配。
- 该查询执行“按 DATE_FIELD desc 排序”,但并非数据集中的所有记录都设置了此 DATE_FIELD(这意味着它应该被解释为 null 或脚本中的默认值,这在两个平台上也是相同的)。
在 Maven 运行测试的一个平台(Linux 服务器)上,它们都可以,但是在我的装有 Windows 的 PC 上,记录是以不同的顺序从数据库(数据集)中提取的,所以当测试验证时出现错误记录的顺序。
所以,我知道修改数据集会让我的测试在两边都变绿,但是如果有人在其中一个记录中写了没有日期列的数据集,他可能知道一些我不知道的业务规则,所以我真的没有修改场景,因为它可能会导致未来无法预料的问题。
搜索答案后,我正在修改问题。我正在寻找的答案,如何让 H2 数据库与不同平台上的空日期保持一致。我必须设置什么参数才能在不触及查询的情况下为整个数据库获取 NULLS FIRST 或 NULLS LAST?
非常感谢和问候。