2 行 34 列のテーブルがあります。列のうち 3 つは null にする必要があります。を使用する場合assertionMode = NON-STRICT
、after.xml ファイルで 34-3=31 列を指定できます。DBUnit は、欠落している 3 つの列が null であることを認識します。DBUnit は、テーブルの 2 行と 34 列が私の after.xml の 2 行と 31 列と正確に一致することを保証し、after.xml で指定しなかった列 (3 列) は DBUnit が検証する null と見なされます。同じように。
ただし、NON_STRICT は機能しなくなりました。正確に 2 行であることを確認したい場合は、それ以上でもそれ以下でもありません (たとえば、after.xml で指定された 2 行がテーブルにある場合、テストに合格します。私はより多くの行を持っているかどうか)。
だから、私は使用する必要があると考えましassertionMode = DEFAULT
た。これを行うと、「予想される列は34ですが、テーブルに31が見つかりました」のようなエラーが表示されます。after.xml で 31 しか指定していないため、31 しか見つかりませんでした。他の 3 つは null であるため、DBUnit ドキュメントごとに after.xml から除外しました。DEFAULT は、DBUnit が null であるかどうかに関係なく、after.xml で 34 列が指定されることを期待しているようです。何か不足していますか?
クエリを指定して 34 列 (3 列は null) ではなく 31 列を取得し、そのクエリの結果を使用して after.xml と比較するなど、回り道の方法を試しました。また、行数を数えて、2行あることを確認しました。しかし、それらは回りくどい方法のようです。
DEFAULTが気に入らないように見えるので、after.xmlで列を除外する以外に、DBUnitで列をnullとして指定する方法はありますか?
assertionMode = DEFAULTを使用してDBUnitで列をnullとして指定する適切な方法は何ですか?