2

Spring で JUnit テストを実行しようとすると、重大な問題が発生します。

これが私の JUnit クラス構成です。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:/META-INF/spring/applicationContext*.xml", "file:src/main/webapp/WEB-INF/spring/webmvc-config.xml" })

applicationContext*.xml私が持っているファイルの1つにこれがあります:

<beans:bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
        <beans:property name="basenames">
            <beans:list>
                <beans:value>messagesSecurity</beans:value>
            </beans:list>
        </beans:property>
    </beans:bean>

Tomcat から実行すると、アプリが正常に動作することに注意してください。次の NoSuchBeanDefinitionException を取得するのは、JUnit テストを実行したときだけです。

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.springframework.context.support.ResourceBundleMessageSource] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:924)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:793)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:707)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:478)
    ... 118 more

私はこの振る舞いにかなり困惑しています...誰かアドバイスしてもらえますか?

4

1 に答える 1

4

私は最終的に私の問題の原因を見つけました.プロキシの問題を引き起こしたインターフェースを使用する代わりに、メッセージソースクラスを使用していました.

MessageSourceインターフェイスを使用するようにアプリをリファクタリングすると、問題が解決されました。

Spring フォーラムでの会話の全文を参照してください。

于 2012-12-05T12:48:59.247 に答える