2012-03-11 19 views
3

それが持続する方法で失敗しているの下に、私は、コードを実行したとき、私は、私の春のIntegrationTestsを実行するトラブルを抱えています:春ROOは:JUnitテストは失敗し

@RooIntegrationTest(entity = Person.class) 
public class PersonIntegrationTest { 

    @Test 
    public void test() { 

    } 
    @Test 
    public void testCountPeople(){ 
     Person personToPersist = PersonTestUtil.createTestPerson(); 

     personToPersist.persist(); 
     Long count = Person.countPeople(); 
     assertNotNull(personToPersist); 
     assertTrue(personToPersist.countPeople() == 1); 

    } 
} 

ザ・スタックトレースが

java.lang.IllegalStateException: Entity manager has not been injected (is the Spring Aspects JAR configured as an AJC/AJDT aspects library?) 
    at org.bixin.dugsi.domain.Person_Roo_Entity.ajc$interMethod$org_bixin_dugsi_domain_Person_Roo_Entity$org_bixin_dugsi_domain_Person$entityManager(Person_Roo_Entity.aj:95) 
    at org.bixin.dugsi.domain.Person.entityManager(Person.java:1) 
    at org.bixin.dugsi.domain.Person_Roo_Entity.ajc$interMethodDispatch1$org_bixin_dugsi_domain_Person_Roo_Entity$org_bixin_dugsi_domain_Person$entityManager(Person_Roo_Entity.aj) 
    at org.bixin.dugsi.domain.Person_Roo_Entity.ajc$interMethod$org_bixin_dugsi_domain_Person_Roo_Entity$org_bixin_dugsi_domain_Person$persist(Person_Roo_Entity.aj:58) 
    at org.bixin.dugsi.domain.Person.persist(Person.java:1) 
    at org.bixin.dugsi.domain.Person_Roo_Entity.ajc$interMethodDispatch1$org_bixin_dugsi_domain_Person_Roo_Entity$org_bixin_dugsi_domain_Person$persist(Person_Roo_Entity.aj) 
    at org.bixin.dugsi.domain.PersonIntegrationTest.testCountPeople(PersonIntegrationTest.java:25) 
    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.InvokeMethod.evaluate(InvokeMethod.java:20) 
    at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) 
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) 
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) 
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) 
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) 
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) 
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:236) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 
を下回っています

誰でもこの問題に遭遇しましたか?

答えて

3

(MVNクリーンインストールまたはそのような何か)Rooのシェルから「日食を実行する」あるいはコンソールから直接Mavenをお試しください。

クラス宣言の上に次の行を追加してください。

@ContextConfiguration(locations = { "/META-INF/spring/applicationContext.xml","/META-INF/spring/applicationContext-security.xml" }) 

AbstractJUnit4SpringContextTestsから継承するテストクラスを作成してください。実行される操作の認証を実装する必要があるかもしれないことに注意してください。

テストクラスは次のようになります。あなたは、一般的に、あなたのテストの目的のために別のコンテキストを持っている必要があり

package com.myapp.test; 

@ContextConfiguration(locations = { "/META-INF/spring/applicationContext.xml","/META-INF/spring/applicationContext-security.xml" }) 
public class TestMyService extends AbstractJUnit4SpringContextTests { 

    @Autowired 
    MyService service = new MyService(); 

    private void setUp() { 
     //Do the setting up of your classes for the test 
    } 

    @Test 
    public void testOperation() throws IOException { 
     //My Test Code here 
    } 
} 

注意。

乾杯。

+0

を私は場所を探し@ContextConfiguration行を追加すると、私はApplicationContextの-のsecurity.xmlを持っていけないので、私が得ますファイルが見つかりませんでしたか? – Warz

+0

これは、あなたのRooプロジェクトにSpring Securityアドオンがインストールされていると仮定したためです。ロケーションリストからapplicationContext-security.xmlを削除して試すことができます。 :) – bhagyas

+0

私はちょうどそれを行い、エンティティマネージャのエラーを取り除いていますが、私はまだ "Beanの検証制約が自動Beanの検証を実行するときに違反"で失敗するのですか? – Warz

0

Springsource Tool Suite(または別のEclipse)を使用している場合は、プロジェクトをクリーニングしてみてください。私はEclipse someimesがAJDTコンパイラを特に起動時に使用しないと思います。

私はRooコンソールからこのメッセージを覚えていません。これは、フードの下でmavenを使用しています。

あなたがあなたのテストにはEntityManagerおよび関連アプリケーション・コンテキストを注入していないようだ

0

EntityManagerとアプリケーションコンテキストを挿入するのを忘れたようです。

はこのような何かを試してみて、それが春Rooので私のために働い:

import static org.junit.Assert.assertEquals; 

import org.junit.Test; 
import org.springframework.test.context.ContextConfiguration; 
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; 

import com.jitter.finance.analyzer.domain.Address; 

@ContextConfiguration(locations = { "classpath*:/META-INF/spring/applicationContext*.xml"}) 
public class EmTest extends AbstractJUnit4SpringContextTests { 

    @Test 
    public void checkEm(){ 
     Address a = new Address(); 
     a.setName("Primo"); 
     a.persist(); 

     Address b = new Address(); 
     b.setName("Secondo"); 
     b.persist(); 

     for(Address ad : Address.findAllAddresses()){ 
      System.out.println(ad.getName()); 
      assertEquals(ad.getName().charAt(ad.getName().length()-1), 'o'); 
     } 
    } 
} 
関連する問題