我需要一个想法/提示如何使用 DbUnit 来断言由数据库生成的 ID(例如 MySQL 的自动增量列)。我有一个非常简单的案例,但目前我发现有问题:
2个表:main
和related
。main.id
列是自动增量。相关表有一个外键:related.main_id
-> main.id
。在我的测试用例中,我的应用程序确实将多个条目插入到两个表中,因此数据集看起来类似于:
<dataset>
<main id="???" comment="ABC" />
<main id="???" comment="DEF" />
<related id="..." main_id="???" comment="#1 related to ABC" />
<related id="..." main_id="???" comment="#2 related to ABC" />
<related id="..." main_id="???" comment="#3 related to DEF" />
<related id="..." main_id="???" comment="#4 related to DEF" />
</dataset>
作为顺序,如何执行插入尚不清楚 - 我不能在测试之前简单地清除/截断表并提前使用预定义的 ID(例如,“ABC”条目将首先出现,因此它获得 ID 1
,“DEF”作为第二个- 得到2
)。如果我以这种方式编写测试 - 这将是错误的 - 运气好有时它可能会起作用,而在其他情况下则不会。
有没有一种干净的方法来测试这种情况?因为我仍然想断言条目是在 DB 中正确创建和链接的,不仅它们存在(如果我只是忽略自动增量列)。