我正在使用Mockito 1.9.5來執行一些單元測試。我試圖注入具有專用接口字段的類的具體類模擬。這裏有一個例子:我Mockito:將類模擬注入到專用接口字段
類正在測試
@Component
public class Service {
@Autowired
private iHelper helper;
public void doSomething() {
helper.helpMeOut();
}
}
我的測試該類
@RunWith(MockitoJUnitRunner.class)
public class ServiceTest {
@Mock
private iHelper helper;
@InjectMocks
private Service service;
@Before
public void setup() {
service = new Service();
}
@Test
public void testStuff() {
doNothing().when(helper).helpMeOut();
service.doSomething();
}
}
此代碼拋出試圖調用helper.helpMeOut當一個NullPointerException()在doSomething()中。我運行測試時調試並發現helper爲null。我也嘗試將iHelper更改爲具體的Helper類,並且發生了同樣的問題。
有什麼建議嗎?我如何讓Mockito正確地將模擬注入到接口專用字段中?
你在做什麼是完全正確的。這應該是可行的。事實上,它適用於我;我經常使用這種方法。如果您想讓真正的Mockito專家看到它,您可以嘗試將其發佈到Mockito用戶列表中。 – 2014-09-26 23:15:55
你爲什麼不把'helper'field可見性更改爲默認值?我猜這個服務和它的測試是一樣的。 – ponomandr 2014-09-27 00:02:28
@ponomandr這沒有幫助。 '@InjectMocks'代碼有一些反射魔法,它允許它設置私有字段。 – 2014-09-27 00:04:23