0

我正在尝试使用 dbunit 将 XML 文件加载到 mySql,我的 FlatXmlDataSet 显示

“注意:这个元素既没有附加源也没有附加 Javadoc,因此找不到 Javadoc”

但是得到 AsserionFailedError:null

dbunit 版本 -->2.4.9 mySql --> 5.2

public class DbUnitSampleTest extends TestCase {

public static final String TABLE_LOGIN ="login";
private FlatXmlDataSet loadedDataSet;

protected IDatabaseConnection getConnection() throws Exception
{
Class.forName("com.mysql.jdbc.Driver");
Connection jdbcConnection =DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");

return new DatabaseConnection(jdbcConnection);
}

@SuppressWarnings("deprecation")
protected IDataSet getDataSet() throws Exception
{               
        loadedDataSet = new FlatXmlDataSet(this.getClass().getClassLoader().getResourceAsStream("input.xml"));

        return loadedDataSet;
}   

public void testCheckLoginDataLoaded() throws Exception
{       
assertNotNull(loadedDataSet);
int rowCount = loadedDataSet.getTable(TABLE_LOGIN).getRowCount();
TestCase.assertEquals(2, rowCount);
}
}

错误:

junit.framework.AssertionFailedError: null
at junit.framework.Assert.fail(Assert.java:47)
at junit.framework.Assert.assertTrue(Assert.java:20)
at junit.framework.Assert.assertNotNull(Assert.java:214)
at junit.framework.Assert.assertNotNull(Assert.java:207)
at DbUnitSampleTest.testCheckLoginDataLoaded(DbUnitSampleTest.java:46)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
4

1 回答 1

1

问题就在这里

loadedDataSet = new FlatXmlDataSet(this.getClass().getClassLoader().getResourceAsStream("input.xml"));

DBUnit 的错误消息很差。问题是资源加载器找不到您的 input.xml 文件。试着像这样把它分开。

InputStream is = this.getClass().getClassLoader().getResourceAsStream("input.xml")
if(is != null)
   loadedDataSet = new FlatXmlDataSet(is);
else
   System.out.println("Can't find input.xml :(");

从那里您应该能够找到找不到 input.xml 的原因。

于 2013-04-01T17:22:02.190 回答