概念
Mock其實是一種思想,一種單元測試的解決方案。
Mock出現之前,我們的單元測試工作量很大,而且往往會受限於開發進程。
Mock很好地解決了局部單元測試的問題,提出了預期返回值並模擬的概念。
目前Mock類庫非常之多,實在不知道怎麼選擇的時候,就算PowerMock吧。不止因爲它本身功能的強大,還因爲它提供了很好地擴展。後期切換到其他類庫也是很方便的。
使用
在使用Mock的過程中,一定要注意運行環境的指定。
(1)直接使用Mocktio.mock()時是不需要指定運行環境的;
(2)使用@Mock和@InjectMocks註解至少要指定運行環境是MockitoJUnitRunner;
(3)使用@MockBean(Spring提供的!非Spring環境不能使用)註解需要指定運行環境是SpringRunner(或SpringJUnit4ClassRunner,兩者等價);
(4)使用PowerMock時要注意,運行環境要指定爲PowerMockRunner,且不能使用@MockBean。
綜上,默認(junit環境)< MockitoJUnitRunner(mocktio環境)< PowerMockRunner(PowerMock環境)或SpringRunner(Spring環境)。