2013-04-01 26 views
0

我试图用DbUnit的加载XML文件到MySQL的XML文件,我FlatXmlDataSet表明的java无法读取使用FlatXmlDataSet

“注:该元素既不具有附加源也没有附着的Javadoc,因此没有的Javadoc可能找到”

但要AsserionFailedError:空

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) 

回答

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。