UnitilsException:找不到文件

时间:2013-03-21 11:19:36

标签: unit-testing testing unitils

可能导致此错误的原因

   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上定义文件名,我也会得到同样的错误。

1 个答案:

答案 0 :(得分:4)

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

我希望它会有所帮助。

相关问题