単体テストの目的でモックされた Spring Context を作成しようとしています。私たちの Spring 構成はかなり大きく、Spring + Springockito Annotations を使用してこれを取得しようとしています。
私が遭遇した問題は、コンテキストの作成/モッキングを処理する複数の Java クラスが必要だということです。今のところ、これは次のようになります (クラス a がクラス B とクラス C のリストをコンストラクター引数として受け取るとしましょう):
//declaring context classes below
@ContextConfiguration(loader = SpringockitoAnnotatedContextLoader.class,
classes = {
ClassA.class,
ClassB.class,
SubClassCOne.class,
SubClassCTwo.class,
... //list goes on and on with more mocks
}
)
public class Configurator {
@Autowired
ClassA classA;
@ReplaceWithMock
ClassB classB;
@Autowired
List<ClassC> classesC;
@Autowired
SubClassCOne subclassCOne;
....
問題は、C サブクラスのリストがここにあるよりもはるかに大きいことです (1 つのクラスだけにすべての責任を負わせていることは言うまでもありません)。そのため、次のような作成を処理する別のクラスを考えました。
ListProvider.java:
//THIS ANNOTATION WON'T BE TAKEN INTO ACCOUNT
@ContextConfiguration(loader = SpringockitoAnnotatedContextLoader.class,
classes = {
SubClassCOne.class,
SubClassCTwo.class,
...
}
)
public class ListProvider {
@Autowired
List<ClassC> classesC;
...
public List<ClassC> getClassesC(){
return classesC;
}
...
Configurator.java:
@ContextConfiguration(loader = SpringockitoAnnotatedContextLoader.class,
classes = {
ClassA.class,
ClassB.class,
ListProvider.class,
...
}
)
public class Configurator {
@Autowired
ClassA classA;
@ReplaceWithMock
ClassB classB;
@Autowired
ListProvider listProvider
@Autowired //probably not autowired anymore?
List<ClassC> classesC;
...
//then somewhere it'll take classesC from listProvider using getter?
しかし、問題は、ListProvider が正しく自動配線されても、@ContextConfiguration
クラスを利用せず、ClassC サブクラスを見つけられないということConfigurator.java
です。 .
このコンテキスト構成を複数のファイルに分割する変更はありますか?