更新:それを行うライブラリがあります!
https://bitbucket.org/kubek2k/springockito/wiki/springockito-annotations
解決策は次のとおりです。
アプリケーションのスプリング コンテキストを変更して、スワップする Bean をプロキシする必要があります。
<bean id="beanSwappable" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="targetSource" ref="beanSwap" />
</bean>
<bean id="beanSwap" class="org.springframework.aop.target.HotSwappableTargetSource">
<constructor-arg ref="beanToSwap" />
</bean>
- beanSwap は、この beanSwap のプロキシです。
- beanSwappable は、Bean を交換するときに参照する Bean です。
- beanToSwap は Bean のデフォルトの実装です
したがって、テスト中のシステムを変更する必要があります。
テストでは、コードは次のようになります。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "test.xml", "spring.xml" })
public class Test {
@Resource(name="beanSwappable")
Bean b;
@Resource(name = "beanSwap")
HotSwappableTargetSource beanSwap;
public void swap() {
Bean b = << create mock version >>
beanSwap.swap(b);
// run test code which
}
}