DBUnitでセレクトされた結果を確認する
DBUnitはでは、selectした結果のDTOのListが正しいかどうか検証することができます。
独自で実装する必要がありますが以下のようにすればdtoの確認は可能です。
以下のassertDtoメソッドの引数にselectした結果のDTOのListを渡します。
public <D> void assertDto(List<D> dtoList) {
try {
File file = new File("dto.xlsx");
FileInputStream fis = new FileInputStream(file);
IDataSet dataSet = new XlsDataSet(fis);
Itable table = dataSet.getTable("DTO");// シート名を指定します
Column[] cols = table.getTableMetaData().getColumns();
// 行数検証
if (table.getRowCount() != dtoList.size()) {
fail("expected:" + String.valueOf(table.getRowCount)) + "\r\nactual:" + String.valueOf(dtoList.size()) + "\r\n");
}
for (int row = 0;row < table.getRowCount(); row++) {
D dto = dtoList.get(row);
for (Column col : cols) {
Object expected = table.getValue(row, col.getColumnName());
Object actual = Deencapsulation.getField(dto, col.getColumnName());
assertThat(actual, is(expected));
if (!Objects.equals(actual, expected)) {
fail(Integer.parseInt(row + 1) + "行目:" + col.getColumnName() + "\r\n");
}
}
}
} catch (AssertionError e) {
throw e;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("DTOエラー");
}
}
dto.xlsxにselectの抽出結果のdtoの内容を記述します。
1行目はプロパティ名を記述し、2行目以降selectされた結果を記述します。
ちなみにItableのtable.getRowCount()メソッドで、ヘッダ行を除いた行数を取得することができます。

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^

コメント