私は単体テストを書いていて、非常に複雑な設定をしています。
従属 Bean はいくつかのリスナーをセットアップし、それらに autowired サービスを渡します。
リスナーが存在することをテストしたいが、それらを呼び出さないため、自動配線されたサービスの代わりに「null」を渡したい。(具体的には:私はセッターを持っていません...)
@Autowired
SomeService1 service1
@Autowired
SomeService2 service2
public List getListeners() {
List l = new ArrayList();
l.add(new AaaListener(service1));
l.add(new BbbListener(Service2));
return l;
}
@Test
public void testListeners() {
int exptecedSize = 2;
sut.doSomething();
List l = sut.getX().getY().getListeners()
assertEquals(expectedSize,l.size());
}
SUT は、リスナーを返すクラスに間接的に依存していることに注意してください。
これは大きな設定からの非常に小さな例であるため、リスナーの動作ではなく存在のみをテストしたいので、ここでは特にモックを使用したくありません。
そのようなサービスの 20 または 30 をモックすると、テストが大幅に遅くなります。
質問: 自動配線されたインスタンス変数にこれらの null を挿入する最も簡単な方法は何ですか?
A) セッターを追加しますか?
B) ReflectionUtils ?
C) java-config + @Beans + null を返す?