0

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として指定する適切な方法は何ですか?

4

1 に答える 1

0

ラウンドアバウトの方法を試しましたが、何か不足していますか?

dbUnit が比較から列を無視するようにするには、除外列テーブルを使用します。

ITable filteredTable = DefaultColumnFilter.excludedColumnsTable(filteredTable, excludeColumns);

比較で一部の列を無視するを参照してください

DEFAULTが気に入らないように見えるので、after.xmlで列を除外する以外に、DBUnitで列をnullとして指定する方法はありますか?

dbUnit でデータベース テーブルに null を挿入するには、ReplacementDataSet を使用して、[NULL] などの null 置換オブジェクトを設定します。ReplacementDataSetを参照してください。

于 2018-03-07T14:50:30.227 に答える