データベース(MySQLの自動インクリメント列など)によって生成されたIDをアサートするためにDbUnitを使用する方法のアイデア/ヒントが必要です。私には非常に単純なケースがありますが、現時点では問題があります。
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」エントリが最初に来るので、ID1
と「DEF」を2番目に取得します--gets 2
)。私がそのようにテストを書くと(これは間違っているでしょう)、運が良ければうまくいくこともあれば、うまくいかないこともあります。
そのようなケースをテストするためのクリーンな方法はありますか?エントリがDBで適切に作成およびリンクされていることを表明したいので、エントリが存在するだけではありません(自動インクリメント列を単に無視する場合)。