ビジネスロジックが ApplicationContext から特定のタイプの Bean をロードして処理する Bean があります。
jUnit テストでは、単体テスト クラス内にダミー Bean をいくつか作成し、テスト対象の Bean がそれらを適切に処理するかどうかを確認したいと考えています。ただし、これを達成するための最良の方法が何であるかはわかりません。
テスト クラス内で内部クラスを宣言するだけでは、Spring はそれをアプリケーション コンテキストの一部として保持しません。jUnit クラス内にアプリケーション コンテキストを挿入し、appContext.registerPrototype() を使用してそれを追加できることはわかっていますが、注釈を使用するよりクリーンな方法があるのではないかと考えました。
@Component で内部クラスにアノテーションを付けようとしましたが、当然のことながら、うまくいきませんでした。
public class PatchEngineTest extends TestBase {
@Component
protected class Patch1 extends PatchBaseImpl implements Patch{
public void applyPatch() throws Exception {
// does nothing
}
}
@Autowired PatchRepository patchRepository;
@Autowired Patch1 patch1;
@Test
public void test() {
fail("Not yet implemented");
}
}
当然のことながら、次のエラー メッセージが表示されます。
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.ia.patch.PatchEngineTest$Patch1] 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)}
これを行う方法はありますか?