Spring 3.1/Java/Tomcat アプリケーションがあります。次のようなサービスクラスがあります。
public class SomeServiceImpl implements SomeService {
@Autowired
public AnotherService anotherService;
// other code...
これは、自動配線された別のサービス クラス AnotherService を使用します。これらのサービス クラスは両方とも、serviceContext.xml ファイルで宣言されています。
私は、SomeServiceImpl をテストする junit を作成し、autowired を使用して、テスト対象のクラス (SomeService) と、テスト対象のクラス (AnotherService) に必要なモック (EasyMock) の依存関係を注入しています。AnotherService の easymock 依存関係は、次のように testContext.xml で定義されます。
<bean id="mockAnotherService" class="org.easymock.EasyMock" factory-method="createMock" primary="true">
<constructor-arg value="com.xyz.AnotherService" />
</bean>
テスト クラスでは、両方のコンテキスト ファイルを使用するように構成します。ただし、ServiceImpl が実際の実装に正しく配線されていることがわかります (これは望ましいことです) が、AnotherService のモック バージョンではなく、concreate バージョン (AnotherServiceImpl) が配線されています。
代わりに、依存関係の模擬バージョンを有線で取得するにはどうすればよいですか? @Resource または @Qualifier を実際の実装で使用することはできません。目的に反するからです。テストクラスでこれらを使用しても問題ありません。