加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – DBUnit布尔值

发布时间:2020-12-13 18:09:58 所属栏目:百科 来源:网络整理
导读:在学习了 SpringBoot之后,我想进一步使用(DBUnit和SpringTestDBUnit)来处理集成测试.在整个过程中,一切进展顺利,直到我遇到数据集上布尔数据类型列的设置值. (数据集的内容如下) ?xml version="1.0" encoding="UTF-8"?dataset Client code="0001" name="clie
在学习了 SpringBoot之后,我想进一步使用(DBUnit和SpringTestDBUnit)来处理集成测试.在整个过程中,一切进展顺利,直到我遇到数据集上布尔数据类型列的设置值. (数据集的内容如下)
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
    <Client code="0001" name="client_one" />
    <Client code="0002" name="client_two" />
    <Client code="0003" name="client_three" active="false" />
    <Client code="0004" name="client_four" />
</dataset>

将active =“false”属性添加到客户端记录[code = 0003],我的集成测试失败并向我显示此消息异常处理表名称=’客户端’导致客户端记录[code = 0001]违反了活动非空列约束.

通过在所有记录上提供活动列的值(有点偏离规范)来修复错误(在分支DBUnit_For_Boolean_Columns_Attempt_One上)之后,它就可以工作了.但是我的目标能够使用上面编写的数据集成功运行集成测试.

问题是如何使用上面的数据集成功进行集成测试?截至目前,我很难实施解决方案,因此我创建了一个Bitbucket repository供您查看并提供帮助.

更新日志

> 2015/02/04变更

>改善问题内容
>添加了Bitbucket存储库

(我在这里有一个不同的答案,它来自对问题的完全误诊,因为我错过了OP使用 FlatXmlDataSet的事实).

FlatXmlDataSet的文档:

Table metadata is deduced from the first row of each table by default. Beware that DbUnit may think a table misses some columns if the first row of that table has one or more null values.

这似乎是这里的问题,因为第一个条目没有为active指定值.为了避免这个问题,您可以使用DBUnit的列感知属性,这实际上使DBUnit在推断表的结构之前读取整个XML:

FlatXmlDataSetBuilder builder = new FlatXmlDataSetBuilder();
builder.setInputSource(new File("path/to/dataSet.xml"));
builder.setColumnSensing(true); // HERE!
IDataSet dataSet = builder.build();

或者,如果您不是自己创建构建器并且不想对其进行操作,请确保在每个元素中都包含活动列,尤其是第一个:

<dataset>
    <client code="0001" name="client_one" active="false" />
    <client code="0002" name="client_two" active="true" />
</dataset>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读