2013-03-21 134 views
1

哪些原因会导致这个错误UnitilsException:文件无法找到

org.unitils.core.UnitilsException: Error inserting test data from DbUnit dataset for method public void fi.utu.nettiopsu.selenium.student.function.ExamRegistrationTest.examRegistrationTest() 
at org.unitils.dbunit.DbUnitModule.insertDataSet(DbUnitModule.java:156) 
at org.unitils.dbunit.DbUnitModule$DbUnitListener.beforeTestSetUp(DbUnitModule.java:557) 
at org.unitils.core.Unitils$UnitilsTestListener.beforeTestSetUp(Unitils.java:273) 
at org.unitils.UnitilsJUnit4TestClassRunner$TestListenerInvokingMethodRoadie.runBeforesThenTestThenAfters(UnitilsJUnit4TestClassRunner.java:151) 
at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:84) 
at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49) 
at org.unitils.UnitilsJUnit4TestClassRunner.invokeTestMethod(UnitilsJUnit4TestClassRunner.java:95) 
at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:61) 
at org.unitils.UnitilsJUnit4TestClassRunner.access$000(UnitilsJUnit4TestClassRunner.java:44) 
at org.unitils.UnitilsJUnit4TestClassRunner$1.run(UnitilsJUnit4TestClassRunner.java:62) 
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34) 
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44) 
at org.unitils.UnitilsJUnit4TestClassRunner.run(UnitilsJUnit4TestClassRunner.java:68) 
at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53) 
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123) 
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164) 
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110) 
at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175) 
at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107) 
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68) 
    Caused by: org.unitils.core.UnitilsException: File with name com/company/app/selenium/role/function/RegTest.xml cannot be found. 
at org.unitils.core.util.FileResolver.resolveFileName(FileResolver.java:118) 
at org.unitils.dbunit.datasetfactory.impl.DefaultDataSetResolver.resolve(DefaultDataSetResolver.java:88) 
at org.unitils.dbunit.DbUnitModule.getDataSet(DbUnitModule.java:368) 
at org.unitils.dbunit.DbUnitModule.getDataSet(DbUnitModule.java:320) 
at org.unitils.dbunit.DbUnitModule.insertDataSet(DbUnitModule.java:147) 

我有相同的包作为我的测试类“丢失”的XML文件。

测试类

  @DataSet({"RegTest.xml"}) 
     public class RegTest extends TestBase { 

我得到即使我不定义上anotation的文件名相同的错误。

回答

4

将RegTest.xml文件重新定位到测试/资源。 您还需要在您的文件中使用unitils.properties属性: dbUnit.datasetresolver.prefixWithPackageName = false - 此属性表示单位不会用于文件之前的搜索pakage名称。 所有这些更改单元将开始在文件夹测试/资源中查找RegTest.xml。

我希望这将有助于。