2010-08-17 58 views
0

以下是测试的org.dbunit.Assertion.assertEquals工作(ITable一,ITable B)DbUnit的断言不扔未能正确

@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返回时,它不会作为测试用例失败而抛出。

我想我在这里失踪的东西。请纠正我或让我知道这个解决方案。 感谢advace。

+0

所有我能说的是,不断的例子越来越简单,直到你找到了什么继续。 – 2010-08-19 13:04:09

+0

@丹尼尔:感谢您的反馈。我添加了一些评论,使其更容易理解,并且我无法在这个示例中进一步简化,并且错误仍然存​​在。如果它抛出任何错误,我可以做一些谷歌搜索,但它不会抛出任何失败/错误:( – raksja 2010-08-24 06:07:35

回答

-1

断言是DBUnit抛出AssertionError。

我发现得到确切的异常原因的最好办法是抓住它,例如: -

try 
{ 
    Assertion.assertEquals(expectedTable, actualTable); 
} 
catch (AssertionError e) 
{ 
    logger.error("Assertion failed with error : " + e.getMessage()); 
}