Spring - JUnit Test

ThirdKeeper

Mitglied
Hallo zusammen!

Versuche seit Tagen einen JUnit Test mit den unten aufgeführten Technologien zu erstellen, doch leider gänzlich ohne Erfolg, da ich immer die unten aufgeführte Fehlermeldung erhalte.

Schon mal jemand eine solche Fehlermeldung gehabt und kann mir sagen woran es liegen könnte?

Googlen bringt zwar einige Treffer, doch leider haben meine Analysen nicht zur Fehlerbeseitigung beigetragen. :(

Verwendete Technologien:
Tomcat 6.0.18, Spring 2.5.5, Toplink, MySQL5.1 und JUnit 4.4

StackTrace:

Code:
java.lang.IllegalArgumentException: Object: de.myProject.model.Member[id=null] is not a known entity type.
        at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.mergeCloneWithReferences(UnitOfWorkImpl.java:2694)
        at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.mergeInternal(EntityManagerImpl.java:220)
        at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerImpl.merge(EntityManagerImpl.java:113)
        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.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:358)
        at $Proxy23.merge(Unknown Source)
        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.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:197)
        at $Proxy23.merge(Unknown Source)
        at de.myProject.MemberJPA.create(MemberJPA.java:63)
        at de.myProject.MemberJPA.create(MemberJPA.java:15)
        at de.myProject.test.dao.TestMemberDAO.createMember(TestMemberDAO.java:30)
        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.springframework.test.context.junit4.SpringTestMethod.invoke(SpringTestMethod.java:163)
        at org.springframework.test.context.junit4.SpringMethodRoadie.runTestMethod(SpringMethodRoadie.java:233)
        at org.springframework.test.context.junit4.SpringMethodRoadie$RunBeforesThenTestThenAfters.run(SpringMethodRoadie.java:333)
        at org.springframework.test.context.junit4.SpringMethodRoadie.runWithRepetitions(SpringMethodRoadie.java:217)
        at org.springframework.test.context.junit4.SpringMethodRoadie.runTest(SpringMethodRoadie.java:197)
        at org.springframework.test.context.junit4.SpringMethodRoadie.run(SpringMethodRoadie.java:143)
        at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.invokeTestMethod(SpringJUnit4ClassRunner.java:142)
        at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
        at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
        at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
        at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
        at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
        at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
        at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
        at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
        at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
        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.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
        at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)
 
1. Das was du da vorhast ist ein Integrationstest, kein Unittest ;)
2. Die Fehlermeldung deutet darauf hin, dass deiner PersistenceUnit die Klasse Member nicht bekannt ist, sie aber irgendwie die Notwendigkeit hat mit dieser zu arbeiten. Entweder ist sie nicht korrekt annotiert, nicht in der persistence.xml angegeben oder beides.

Gruß
Ollie
 
Kannst du mal den Kopf des Tests posten? (Klassenannotationen + evtl. geautowirete Felder) Eine Kurzversion der Konfigurationsfiles?

Mir erschließt sich der Stacktrace auch noch nicht ganz. Meine Deutung: Member ist eigentlich ein Interface, MemberJPA die Entitätsklasse, die dieses Interface implementiert. TestMemberDao ist das entsprechende DAO für diese Entitäten, richtig? Das würde dann zwar die Exception erklären (dein Persistenzprovider kann das Interface logischerweise nicht instatiieren), allerdings ist es dann verwunderlich warum es im Server tut. Hast du Toplink mal zum ausprobieren gegen Hibernate getauscht? Wie startest du das LoadTimeWeaving im Testcase/WebServer?

Gruß
Ollie
 

Neue Beiträge

Zurück