我在寫單元測試,並且有一個相當複雜的設置。我如何將「nulls」注入自動佈線的彈簧豆?
依賴bean設置一些偵聽器並將它們傳遞給自動裝配的服務。
我想測試一下偵聽器是否存在,但不會調用它們,所以我想通過'null'而不是autowired服務。 (具體是:我沒有制定者...)
@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會大大減緩測試。
問題:將這些空值注入自動佈線實例變量的最簡單方法是什麼?
A)添加setters?
B)ReflectionUtils?
C)java-config + @Beans + return null?
回答過的問題在這裏: http://stackoverflow.com/questions/3279868/how-to-turn-spring-autowired-required-property-to-false-for-test – Bastl 2013-05-03 09:40:44