2015-04-03 5 views
7

Ich habe meine Testumgebung über java config konfiguriert. Bei meinem Test muss ich einige Daten im Voraus, um es auszuführen, aber wenn ich den Test mit dem @DatabaseSetup Anmerkung betreibe ich immer den Fehler@DatabaseSetup kann den Datensatz nicht laden

Unable to load dataset from "personTestData.xml" using class com.github.springtestdbunit.dataset.FlatXmlDataSetLoader 

Die Datei auf src/test/resources/personTestData.xml befindet. Aus Neugierde habe ich die Datei in das gleiche Paket verschoben, in dem sich der Test selbst befindet, immer noch der gleiche Fehler.

Ich habe unzählige Stunden damit verbracht, das Internet nach dem Fehler zu durchsuchen, bisher keine Lösung.

UPDATE

Komponenten und Version, die ich verwenden:

junit: 4.12 
hamcrest: 1.3 
springtestdbunit: 1.2.1 
dbunit: 2.5.0 
bonecp: 0.8.0 
hsqldb: 1.8.0.10 

mein xml

<?xml version="1.0" encoding="UTF-8"?> 

<dataset> 
    <person id="uuid'da578845-356c-4c99-9bda-c288c88e7b55" 
      dateCreated="2015-03-24 10:54:00" 
      isEnabled="1" 
      city="Graz" 
      displayName="42" 
      email="[email protected]" 
      firstname="Arthur" 
      lastname="Dent" 
      phone="01123456" 
      street="Waßkannergasse 16" 
      web="www.vdsoft.at" 
      zip="1010"/> 

    <person id="uuid'5aaae7dd-b84f-463e-a534-e7b2bc54752a" 
      dateCreated="2015-03-24 10:54:10" 
      isEnabled="1" 
      city="Graz" 
      displayName="Towel" 
      email="[email protected]" 
      firstname="Ford" 
      lastname="Prefect" 
      phone="01123856" 
      street="Waßkannergasse 45" 
      web="www.vdsoft.at" 
      zip="1010"/> 

    <person id="uuid'b770b982-3a59-4292-9fd8-715afa2c1bef" 
      dateCreated="2015-03-24 10:54:20" 
      isEnabled="1" 
      city="Graz" 
      displayName="Lemon" 
      email="[email protected]" 
      firstname="Zaphod" 
      lastname="Beeblebrox" 
      phone="01125456" 
      street="Waßkannergasse 20" 
      web="www.vdsoft.at" 
      zip="1010"/> 
</dataset> 

mein Testfall

@Test 
    @DatabaseSetup(type = DatabaseOperation.CLEAN_INSERT, 
      value = "personTestData.xml") 
    public void AddPersonAdditionsSuccessfull() {   
     PersonAdditionsDbo data = new PersonAdditionsDbo(); 
     data.setCompany("VDsoft"); 
     data.setCompetences("Developer"); 
     data.setDistributor(true); 
     data.setFunction("Teamleader"); 
     data.setHolisIsTopBecause("Payes rent..."); 
     data.setIamHolisBecauseNote("Work"); 
     data.setInvestment(10000f); 
     data.setInvitedById(this.zaphodBeeblebrox.getId()); 
     data.setNotes("Something to say..."); 
     data.setPerson(this.athurDent); 
     data.setReceiveNewsletter(true); 
     data.setReceivePressMessages(true); 
     data.setType("Developer"); 

     assertNull(data.getId()); 

     this.repo.save(data); 

     assertNotNull(data.getId()); 
    } 

stack trace, für die init der db geschnitet

WARN [main] (EntityManagerFactoryRegistry.java:80) - HHH000436: Entity manager factory name (TESTHolisEMF) is already registered. If entity manager will be clustered or passivated, specify a unique value for property 'hibernate.ejb.entitymanager_factory_name' 
WARN [main] (TestContextManager.java:252) - Caught exception while allowing TestExecutionListener [[email protected]] to process 'before' execution of test method [public void holis.backend.webapi.repository.PersonAdditionTest.AddPersonAdditionsSuccessfull()] for test instance [[email protected]] 
java.lang.IllegalArgumentException: Unable to load dataset from "personTestData.xml" using class com.github.springtestdbunit.dataset.FlatXmlDataSetLoader 
    at org.springframework.util.Assert.notNull(Assert.java:112) 
    at com.github.springtestdbunit.DbUnitRunner.loadDataset(DbUnitRunner.java:214) 
    at com.github.springtestdbunit.DbUnitRunner.loadDataSets(DbUnitRunner.java:203) 
    at com.github.springtestdbunit.DbUnitRunner.setupOrTeardown(DbUnitRunner.java:184) 
    at com.github.springtestdbunit.DbUnitRunner.beforeTestMethod(DbUnitRunner.java:66) 
    at com.github.springtestdbunit.DbUnitTestExecutionListener.beforeTestMethod(DbUnitTestExecutionListener.java:186) 
    at org.springframework.test.context.TestContextManager.beforeTestMethod(TestContextManager.java:249) 
    at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:72) 
    at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:82) 
    at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:73) 
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:217) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:83) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 
    at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) 
    at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:68) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:163) 
    at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:45) 
    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:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:483) 
    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) 
+1

Können Sie Ihre Frage mit dem vollständigen Stack-Trace und einer Testmethode, bei der Sie '@ DatabaseSetup' verwenden, aktualisieren? –

Antwort

13

Ich hatte das gleiche Problem vor ein paar Tagen.

Es scheint, dass Ihre Datei personTestData.xml nicht gefunden wird (dataSet null ist) in:

IDataSet dataSet = dataSetLoader.loadDataSet(testContext.getTestClass(), dataSetLocation); 

Haben Sie versucht /personTestData.xml stattdessen zu setzen? Das hat das Problem in meinem Fall gelöst.

+0

Es scheint, dass dies auch für mich funktioniert, zumindest bekomme ich einen weiteren Fehler. Jetzt kann er die id nicht einfügen aber ok UUIDs mit Hibernate und mysql ist auf einer anderen Seite ... Danke Julien – Christoph

Verwandte Themen