2012-03-11 4 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

당신이 EntityManager를하고 시험에 관련된 응용 프로그램 컨텍스트를 주입하지 않은 것으로 보인다 시도 .

클래스 선언 위에 다음 행을 추가하십시오.

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

AbstractJUnit4SpringContextTests에서 inhert하는 테스트 클래스를 만드는 시도하고. 일부 작업을 실행하려면 인증을 구현해야 할 수도 있습니다.

테스트 클래스는 다음과 같을 수 있습니다.

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

, 그래서를 얻을 수 파일을 찾을 수 없습니다 예외? – Warz

+0

그 이유는 Spring Security Addon이 Roo 프로젝트에 설치되어 있다고 가정했기 때문입니다. 위치 목록에서 applicationContext-security.xml을 제거하고 시도 할 수 있습니다. :) – bhagyas

+0

내가 그랬어 그리고 내가 점점하지만 엔터티 관리자 오류가 제거되었습니다 "자동 콩 유효성 검사를 실행할 때"콩 유효성 검사 제약 조건 위반 여전히 실패? – Warz

0

Springsource Tool Suite (또는 다른 Eclipse)를 사용하는 경우 프로젝트를 정리하십시오. 나는 Eclipse가 AJDT 컴파일러를 사용하지 않는다고 생각한다.

후드 아래에서 maven을 사용하는 Roo 콘솔에서이 메시지가 기억 나지 않습니다.

원산지 규정 쉘에서 "일식을 수행"또는 콘솔에서 직접 메이븐 (MVN 클린 설치하거나 그런 일이)

0

EntityManager 및 응용 프로그램 컨텍스트를 삽입하는 것을 잊어 버린 것 같습니다. 이 같은

시도 뭔가, 그것은 봄 루와 나를 위해 일한 : 내가 위치를 찾는 @ContextConfiguration 라인을 추가 할 때, 내가 ApplicationContext를-security.xml을 해달라고

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'); 
     } 
    } 
} 
관련 문제