如何在DBUnit中使用assertionMode = DEFAULT检查列的空值?
DBUnit NON-STRICT断言模式的旧行为与替代方案
我之前在做数据库集成测试时,用DBUnit的NON-STRICT断言模式省了不少事:当时手里有一张2行34列的表,其中3列是空值。我只需要在after.xml里定义31列的数据(跳过那3个空值列),DBUnit会自动把缺失的3列假定为空值,然后验证数据库里的2行34列数据和xml里的内容完全匹配——那些没在xml里指定的列,会被默认按空值来校验,不用我反复写<null/>或者空标签,特别方便。
不过后来发现NON_STRICT模式的这个特性不再生效了?如果你也遇到了同样的问题,可以试试这些办法:
- 切换到
NON_STRICT_UNORDERED模式:这个模式保留了“缺失列按空值处理”的逻辑,同时还支持行的无序验证,很多时候能替代原来的NON-STRICT - 手动补充空值列:虽然繁琐,但可以在
after.xml里明确写出那些空值列的<null/>标签,确保验证逻辑清晰 - 核对DBUnit版本:有可能是版本升级改变了
NON_STRICT的行为,去查一下你用的DBUnit版本的官方文档,确认当前断言模式的具体规则
内容的提问来源于stack exchange,提问作者cptwonton
相关产品推荐
相关产品推荐

