spring测试、groovy库和限定符标记不兼容

spring测试、groovy库和限定符标记不兼容,spring,spring-mvc,groovy,spring-test,Spring,Spring Mvc,Groovy,Spring Test,我正试图向现有项目添加一些groovy脚本,我坚持让集成测试正常工作。 我有几个用标记的bean,它们用于测试和生产代码中的自动连接 就在我添加“org.codehaus.groovy:groovy all:2.4.0”之后 (也尝试了其他版本)对于依赖项,甚至在没有任何groovy使用的情况下,我的集成测试停止工作,除了: SEVERE: Caught exception while allowing TestExecutionListener [org.springframework

我正试图向现有项目添加一些groovy脚本,我坚持让集成测试正常工作。 我有几个用
标记的bean,它们用于测试和生产代码中的自动连接

就在我添加“org.codehaus.groovy:groovy all:2.4.0”之后 (也尝试了其他版本)对于依赖项,甚至在没有任何groovy使用的情况下,我的集成测试停止工作,除了:

    SEVERE: Caught exception while allowing TestExecutionListener [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@5e5f7983] to prepare test instance [com.dph.groovy.vs.springtest.IntegrationTest@299c9fe7]
    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)
不过,运行项目(如果这很重要的话,使用jetty 6)不会引起任何问题,所以我假设spring测试与groovy的结合有一些技巧

我可能只是将“type”添加到我的限定符中,但这并不能解决问题,因为我有具有相同限定符标记配置的外部依赖项,而且据我所知,该属性是可选的

我想至少找出这个问题的根源

我创建了一个示例项目来重现所描述的问题,并将感谢您的任何想法:
您在Spring的测试支持中发现了一个bug

固定在Spring框架4.1.6和4.2 RC1中

我已经修复了SpringFramework 4.1.6(计划于2015年3月底发布)和4.2(计划于2015年第三季度发布)的这个bug。有关更多详细信息,请参阅JIRA问题

如果您希望在上述版本之前尝试修复,请考虑建立一个即将到来的夜间快照。

临时工作环境

同时,(对于允许编辑的XML配置文件),您可以通过显式地将
标记中的
type
属性设置为预期的默认值,即
“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>

问候,

萨姆
(SpringTestContext框架的作者)

使用了
testCompile.exclude模块:“GroovyAll”
。对我来说很有用,因为测试配置不包含groovy部件。然而,如果它真的会出现问题,那么问题将回到您使用的是哪个版本的Spring?完整的未编辑堆栈跟踪也会很有帮助。请忽略我前面的两条评论。我能够从您的示例项目中推断出这些信息。通过对示例项目的快速分析,您似乎发现Spring支持使用
GroovyBeanDefinitionReader
解析XML配置文件时存在一个bug。我会进一步调查此事,然后再打给你。太好了!谢谢你让我知道。:)