dBUnit を使用しており、実際の DB データセットを使用して、事前定義された FlatXmlDataSet の行をアサートしようとしています。問題は、検証コード フィールドの getValue が、そのデータが FlatXmlDataSet から取得された場合は文字列を返し、実際のライブ データベースから取得された場合は整数として返すことです。これは、文字列以外のすべてのデータ型に当てはまります。比較する前にすべてを文字列に変換する何かを書くことはできますが、より良い方法はありますか?
私のコード:
IDataSet initialSet = setupDBWithData("test.xml", true);
ITable initialTable = initialSet.getTable("USER");
String response = doTestSendVerificationPin();
assertOKResponse(response);
ITable userTable = _databaseTester.getConnection().createTable("USER");
// Make sure old user row is left unchanged
assertRowsEqual(initialTable, 0, userTable, 0);
...(さらに下へ)
protected void assertRowsEqual(ITable expected, int rowExpected, ITable actual, int rowActual) throws Exception
{
ITableMetaData metaData = expected.getTableMetaData();
Column [] cols = metaData.getColumns();
for (int i = 0; i < cols.length; i++)
{
String colName = cols[i].getColumnName();
assertEquals(expected.getValue(rowExpected, colName), actual.getValue(rowActual, colName));
}
}
これは、私が丸呑みする test.xml です。
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE dataset SYSTEM "../Tests/testdata/common/some.dtd">
<dataset>
<USER ID="132" FIRST_NAME="Joe" LAST_NAME="Bob" VERIFICATION_CODE="1869" />
</dataset>