2015-01-29 3 views
2

임 기존 프로젝트에 그루비 스크립트를 추가하려고하는데 통합 테스트가 작동하도록 노력했습니다. <qualifier /> 태그로 표시된 빈은 테스트 및 프로덕션 코드 모두에서 자동 와이어 링에 사용됩니다.스프링 테스트, Groovy 라이브러리 및 한정자 태그 비 호환성

내가 'org.codehaus.groovy : 그루비-모든 : 2.4.0'추가 직후 종속성에 (aswell 다른 버전을 시도), 심지어 어떤 끝내 사용하지 않고, 내 통합 테스트는 제외하고, 작동을 중지 :

SEVERE: Caught exception while allowing TestExecutionListener [org.springframewor[email protected]5e5f7983] to prepare test instance [[email protected]] 
    java.lang.IllegalStateException: Failed to load ApplicationContext 
     at org.springframework.test.context.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:94) 
     at org.springframework.test.context.DefaultTestContext.getApplicationContext(DefaultTestContext.java:72) 
     at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:117) 
     at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83) 
     at 
...... 
    Caused by: org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unexpected failure during bean definition parsing 
    Offending resource: class path resource [spring/app-config.xml] 
    Bean 'service'; nested exception is org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Tag 'qualifier' must have a 'type' attribute 
    Offending resource: class path resource [spring/app-config.xml] 
    Bean 'service' 
     at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:70) 
     at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85) 
     at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.error(BeanDefinitionParserDelegate.java:323) 

runnning 프로젝트 (이 문제가 6 번이라면)는 문제를 일으키지 않습니다. 따라서 스프링 테스트 조합에 그루비가있는 트릭이 있다고 가정합니다.

내 한정어에 'type'을 추가 할 수 있지만 동일한 한정자 태그 구성으로 외부 종속성이 있기 때문에 문제가 해결되지 않습니다.이 속성 외에도 선택 사항입니다.

적어도이 문제의 근본 원인을 알고 싶습니다. 당신은 봄의 테스트 지원에서 버그를 발견했다 https://github.com/ametiste/groovy-vs-spring-test

+0

사용'testCompile.exclude 모듈 : "그루비 모두"'. 테스트 구성에 그루비 파트가 포함되어 있지 않아서 작동합니다. 그러나 혹시라도 문제가 다시 발생한다면 – ametiste

+0

어떤 버전의 Spring을 사용하고 있습니까? –

+0

편집되지 않은 전체 스택 추적도 도움이됩니다. –

답변

0

:

나는 설명 된 문제를 재현하고 어떤 아이디어를 주셔서 감사합니다 예제 프로젝트를 만들었습니다.

은 스프링 프레임 워크에서 수정 된 4.1.6 나는 스프링 프레임 워크 4.1.6이 버그를 수정 한

4.2 RC1 3 분기에 출시 될 예정 4.2 ((2015 년 3 월 말에 출시 될 예정) 2015). 자세한 내용은 JIRA 발행 SPR-12768을 참조하십시오.

앞서 언급 한 릴리스 이전에 수정 프로그램을 시험해 보려면 다음 달의 스냅 샷 중 하나에 대한 빌드를 고려하십시오.

임시-를 해결하려면 명시 적으로 의도에 <qualifier> 태그에 type 특성을 설정하여이 버그를 회피 할 수 있습니다 (당신이을 편집하도록 허용 된 XML 설정 파일에 대한 ) 한편

, 기본값 인"org.springframework.beans.factory.annotation.Qualifier"입니다. 예를 보려면 다음 XML 구성을 참조하십시오.

<bean id="foo" class="java.lang.String" c:_="bar"> 
    <qualifier value="foo" type="org.springframework.beans.factory.annotation.Qualifier" /> 
</bean> 

감사합니다,

(스프링 TestContext 프레임 워크의 저자)

+0

오늘 업데이트되었으며 4.1.6은 모두 완벽하게 작동합니다 – ametiste

+0

그레이트! 알려 줘서 고마워. :) –

관련 문제