Тесты проходят, когда запускаются муравьем, но не проходят, когда запускаются мавеном? - PullRequest
0 голосов
/ 17 декабря 2010

У кого-нибудь есть идеи, почему тест будет проходить при запуске с ant, но не будет работать при запуске с maven?

Я запускаю свои тесты на Windows и, по-видимому, есть некоторые проблемы с верным и Windows? Я пытался изменить useSystemClassLoader = False и useManifestOnlyJar = true, но не смог заставить их работать. Ниже приведен стек для ошибки, получаемой при запуске теста с maven.

Одна вещь, которую я заметил, это то, что в стеке есть вызовы $ Proxy.someMethod, я понятия не имею, откуда они приходят.

Спасибо за любую помощь.

javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: cheetah.entities.businessdata.Attribute
        at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1214)
        at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1147)
        at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1153)
        at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:678)
        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:240)
        at $Proxy27.persist(Unknown Source)
        at cheetah.repositories.businessdata.jpa.JpaAttributeRepository.create(JpaAttributeRepository.java:28)
        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.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
        at $Proxy29.create(Unknown Source)
        at cheetah.tests.integration.util.BusinessDataLookupData.createAttributeLookupData(BusinessDataLookupData.java:19)
        at cheetah.tests.integration.util.BusinessDataLookupData.create(BusinessDataLookupData.java:10)
        at cheetah.tests.integration.util.LookupData.create(LookupData.java:7)
        at cheetah.tests.integration.util.TestUtil.prepareData(TestUtil.java:23)
        at cheetah.repositories.businessdata.tests.integration.AttributeRepositoryTest.setUpClass(AttributeRepositoryTest.java:23)
        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.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
        at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
        at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
        at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
        at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:59)
        at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:120)
        at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:103)
        at org.apache.maven.surefire.Surefire.run(Surefire.java:169)
        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:350)
        at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1021)
Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: cheetah.entities.businessdata.Attribute
        at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:127)
        at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:61)
        at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:808)
        at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:782)
        at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:786)
        at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:672)
        ... 43 more

Ответы [ 4 ]

1 голос
/ 20 декабря 2010

Если это связано с тем, что «код до тестирования» не запускался, то, возможно, проверьте отказоустойчивый плагин Maven и посмотрите этапы жизненного цикла до и после интеграции.

Кроме того, Maven вполне может использовать путь к классу, отличный от Ant - ссылаясь на JARS в своем локальном репо. Что-то, на что нужно обратить внимание.

1 голос
/ 17 декабря 2010

Скорее всего, сборка ant устанавливает какие-то свойства для среды либо через скрипт ant и файлы свойств напрямую, либо через задачу ant, которую вы используете, а сборка Maven этого не делает.

Это, в свою очередь, приводит к сбою различных конфигураций среды выполнения теста в Maven, но не в Ant. Просто предположение, но я видел это раньше ;-)

1 голос
/ 17 декабря 2010

Исключение указывает на проблему с отсоединенным объектом. http://www.google.com.au/search?q=javax.persistence+detached+entity выводит ряд документов, в которых говорится об отдельных объектах.

Из одного из этих документов - «Отдельно стоящие - Отдельные сущности имеют постоянную идентичность, но в настоящее время они не активно управляются в контексте постоянства».

Исходя из этого, я подозреваю, что на самом деле есть проблема с кодом, а не с Ant или maven.

0 голосов
/ 20 декабря 2010

Установка forkMode = никогда в верной конфигурации огня не решит проблему. Я не уверен в рассуждениях, но без этой опции maven не выполнял код предварительного тестирования, которым был ant.

...