統合テストを作成したい Spring XML Bean 定義があります。XML Bean 定義は、より大きなアプリケーション コンテキストの一部であり、<import>
. 定義内では、他のファイルから取得したいくつかの Bean を参照しています。
私の統合テストでは、定義をスタンドアロンでインスタンス化し、他のすべての Bean に Mockito モックを使用したいと考えています。今まで、私は次のようなものを使用しています:
FooIntegrationTest.java
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class FooIntegrationTest {
@Autowired private ClassUnderTest underTest;
@Autowired private MockedClass mock;
@Test
public void testFoo() {
}
}
FooIntegrationTest-context.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:c="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<import resource="part-to-test.xml" />
<bean id="mockedClassReferencedByName" class="org.mockito.Mockito" factory-method="mock" c:classToMock="SomeMockedClass" />
<bean class="org.mockito.Mockito" factory-method="mock" c:classToMock="OtherMockedClassReferencedByType" />
<bean class="org.mockito.Mockito" factory-method="mock" c:classToMock="MockedClass" />
...
</beans>
かなり面倒なモック セクションを自動化したい: 理想的には、アプリケーション コンテキストで見つからないすべての Bean を自動的にモックしたいと考えています。名前参照を使用して設定されるpart-to-test.xml
用途@Autowired
と Bean。XML Bean 定義ファイルのみを使用し、@Configuration
クラスも@Component
注釈も使用しません。
でカスタム コンテキスト ローダーを使用する方法を調べましたが@ContextConfiguration(loader=...)
、そのための適切な拡張ポイントをまだ見つけていません。Sprinockito はこの問題に対処していないようです。
この問題をすでに解決している他のプロジェクトはありますか? そうでない場合、どこでSpringを拡張してモックを自動的に作成しますか?