<?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变更
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>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。