对没有主键的表使用 DbUnit
我正在尝试设置单元测试环境以使用 DbUnit。
我遇到了一些问题,因为我尝试控制的表没有主键。我收到了 org.dbunit.dataset.NoPrimaryKeyException
。
我已按照此处的步骤 http://dbunit.wikidot.com/noprimarykeytable 但如何使用:
connection.getConfig().setProperty("http://www.dbunit.org/properties/primaryKeyFilter", new MyPrimaryKeyFilter("A1"));
我的每张桌子?
例如,我有以下数据库:
CREATE TABLE `NO_PK1` (
`A1` int(11) NOT NULL,
`A2` varchar(50) default NULL
);
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<NO_PK1 A1="1" A2="Test1" />
<NO_PK1 A1="2" A2="Test2" />
<NO_PK1 A1="3" />
</dataset>
CREATE TABLE `NO_PK2` (
`B1` int(11) NOT NULL,
`B2` varchar(50) default NULL
);
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<NO_PK2 B1="1" B2="Test1" />
<NO_PK2 B1="2" B2="Test2" />
<NO_PK2 B1="3" />
</dataset>
CREATE TABLE `NO_PK3` (
`C1` int(11) NOT NULL,
`C2` varchar(50) default NULL
);
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<NO_PK3 C1="1" C2="Test1" />
<NO_PK3 C1="2" C2="Test2" />
<NO_PK3 C1="3" />
</dataset>
如何重写 connection.getConfig().setProperty("http://www.dbunit.org/properties/primaryKeyFilter", new MyPrimaryKeyFilter("A1"));< /code> 在这种情况下?
非常感谢您的任何建议。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要确保 MyPrimaryKeyFilter 处理架构中的所有表。在示例中,只有一张表,因此提供的简单过滤器类可以正常工作。在你的情况下,我可能会更改该类以获取包含表的 Map -> pk 列名称映射:
然后使用 {NO_PK1 ->; 设置映射A1},{NO_PK2 -> B1},以及{NO_PK3-> C1} 条目。
You need to make sure that your MyPrimaryKeyFilter handles all the tables in your schema. In the example, there is only one table, so the simple filter class provided works fine. In your case, I would probably change that class to take a Map containing table -> pk column name mappings:
and then set up the map with {NO_PK1 -> A1}, {NO_PK2 -> B1}, and {NO_PK3 -> C1} entries.
我遇到了同样的问题,并在这些博客中找到了解决方案:
所有博客的作者开始来自 http://dbunit.wikidot.com/noprimarykeytable
此代码显示了检查 id 的不同策略:
I fall into same issue and found solution in these blogs:
All blog's authors start from http://dbunit.wikidot.com/noprimarykeytable
This code shown different strategies for checking id: