以下是测试 org.dbunit.Assertion.assertEquals(ITable a,ITable b)的工作情况的测试用例
@Test
public void testAssertion() {
try {
//Creating actual table with 2 columns
DefaultTable actual = new DefaultTable("table_name",
new Column[] { new Column("col1", DataType.INTEGER),
new Column("col2", DataType.VARCHAR) });
actual.addRow(new Object[] { 1, "ABCD" });
actual.addRow(new Object[] { 2, "BABCD" });
actual.addRow(new Object[] { 3, "CCGF" });
//Creating expected table with same 2 columns
DefaultTable expected = new DefaultTable(expected
.getTableMetaData());
expected.addRow(new Object[] { 1, "ABCD" });
expected.addRow(new Object[] { 2, "BBCD" });
// Check the actual vs expected
Assertion.assertEquals(actual, expected);
//This should return a test failure since actual & expected are different.
//But its not throwing any test case failure.
} catch (DataSetException e1) {
e1.printStackTrace();
} catch (DatabaseUnitException e) {
e.printStackTrace();
}
}
这里两个DefaultTable的值都不匹配,但JUnit仍未使上述测试用例失败。我正在从eclipse运行它,它在测试用例下导致0错误和0失败以及无根测试,如下所示,
testAssertion [Runner: JUnit 4]
[+] Unrooted Tests [Runner: JUnit 4]
我调试了DBUnit API,它根据需要抛出数据不匹配异常,但最后从SpringJUnit4ClassRunner返回时,它不会被抛出作为测试用例失败。
我想我在这里缺少一些东西。请纠正我或让我知道解决方案。 谢谢你的推荐。
答案 0 :(得分:-1)
断言是DBUnit抛出AssertionError。
我发现获得确切异常原因的最佳方法是捕获它,例如: -
try
{
Assertion.assertEquals( expectedTable, actualTable );
}
catch ( AssertionError e )
{
logger.error( "Assertion failed with error : " + e.getMessage());
}