0

我在 DBUnit 测试中遇到了一个有趣的问题。

我们有一些使用 DBUnit 测试和 xml 数据集进行测试的代码。我在平台之间使用完全相同的数据集和代码文件的测试结果不一致,因此我决定遵循这一路径,因为我将重构 DB Access 类的一部分。

我遇到的问题如下:

  1. 数据集有 3 条记录与 hbm 文件中定义的某个查询匹配。
  2. 该查询执行“按 DATE_FIELD desc 排序”,但并非数据集中的所有记录都设置了此 DATE_FIELD(这意味着它应该被解释为 null 或脚本中的默认值,这在两个平台上也是相同的)。

在 Maven 运行测试的一个平台(Linux 服务器)上,它们都可以,但是在我的装有 Windows 的 PC 上,记录是以不同的顺序从数据库(数据集)中提取的,所以当测试验证时出现错误记录的顺序。

所以,我知道修改数据集会让我的测试在两边都变绿,但是如果有人在其中一个记录中写了没有日期列的数据集,他可能知道一些我不知道的业务规则,所以我真的没有修改场景,因为它可能会导致未来无法预料的问题。

搜索答案后,我正在修改问题。我正在寻找的答案,如何让 H2 数据库与不同平台上的空日期保持一致。我必须设置什么参数才能在不触及查询的情况下为整个数据库获取 NULLS FIRST 或 NULLS LAST?

非常感谢和问候。

4

1 回答 1

1

好,

当我找到答案时,我正在回答我自己的问题,更好的后续行动会很好,但我认为这很重要。

我按照此页面上的说明进行操作:

http://www.h2database.com/javadoc/org/h2/constant/SysProperties.html

并在加载驱动程序之前在运行时设置 sortNullsHigh 属性:

System.setProperty("h2.sortNullsHigh", "true");

也许稍后我们会看到一种将它放入配置文件的方法,在所有中央单元测试都使用 jenkins/maven 运行并且属性设置正确之后。

问候

于 2013-04-05T13:37:07.087 回答