我有一个 2 行 34 列的表。3 列应为空。使用时assertionMode = NON-STRICT
,我可以在 after.xml 文件中指定 34-3=31 列,DBUnit 将意识到 3 个缺失的列应该为空。DBUnit 确保表中的 2 行和 34 列与我的 after.xml 中的 2 行和 31 列精确匹配,并且我在 after.xml 中未指定的任何列(3 列)将被假定为空 DBUnit 验证也是。
NON_STRICT 不再起作用,但是,如果我想确保我有 2 行,不多不少(例如,如果表确实有 after.xml 中指定的 2 行,无论是否我是否有更多行)。
所以,我想我应该使用assertionMode = DEFAULT
. 当我这样做时,我得到的错误类似于“预期的列是 34,但在表中找到 31”。它只找到了 31,因为我只在 after.xml 中指定了 31。其他 3 个为空,所以我将它们排除在每个 DBUnit 文档的 after.xml 之外。DEFAULT 似乎使 DBUnit 期望在我的 after.xml 中指定 34 列,无论它们是否为空,我是否遗漏了什么?
我尝试了迂回方法,例如指定一个查询来获取 31 列而不是 34 列(3 列为空),并使用该查询的结果与我的 after.xml 进行比较。我也刚刚计算了行数并确保我有 2 行。但那些似乎是迂回的方法。
有没有办法在 DBUnit 中将列指定为空,而不是将它们留在我的 after.xml 中,因为 DEFAULT 似乎不喜欢这样?
在 DBUnit 中使用 assertionMode = DEFAULT 将列指定为空的正确方法是什么?