Mockito モックを Spring Bean に注入する 質問する

Mockito モックを Spring Bean に注入する 質問する

JUnit を使用した単体テストの目的で、Mockito モック オブジェクトを Spring (3+) Bean に挿入したいと考えています。現在、Bean の依存関係は、@Autowiredプライベート メンバー フィールドのアノテーションを使用して挿入されています。

使用を検討しましたReflectionTestUtils.setFieldが、注入したい Bean インスタンスは実際にはプロキシであるため、ターゲット クラスのプライベート メンバー フィールドを宣言しません。依存関係にパブリック セッターを作成したくありません。そうすると、純粋にテスト目的でインターフェイスを変更することになるからです。

私はいくつかフォローしましたアドバイスSpring コミュニティによって提供されていますが、モックは作成されず、自動配線は失敗します。

<bean id="dao" class="org.mockito.Mockito" factory-method="mock">
    <constructor-arg value="com.package.Dao" />
</bean>

現在発生しているエラーは次のとおりです。

...
Caused by: org...NoSuchBeanDefinitionException:
    No matching bean of type [com.package.Dao] found for dependency:
    expected at least 1 bean which qualifies as autowire candidate for this dependency.
    Dependency annotations: {
        @org...Autowired(required=true),
        @org...Qualifier(value=dao)
    }
at org...DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(D...y.java:901)
at org...DefaultListableBeanFactory.doResolveDependency(D...y.java:770)

値を無効な値に設定すると、constructor-argアプリケーション コンテキストの起動時にエラーは発生しません。

ベストアンサー1

最善の方法は次のとおりです。

<bean id="dao" class="org.mockito.Mockito" factory-method="mock"> 
    <constructor-arg value="com.package.Dao" /> 
</bean> 

更新
コンテキスト ファイルでは、このモックは、それに依存する自動配線フィールドが宣言される前にリストされる必要があります。

おすすめ記事