您好,登錄后才能下訂單哦!
本篇內容主要講解“java中PowerMockito模擬方法內new對象實例”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“java中PowerMockito模擬方法內new對象實例”吧!
在做單元測試中有時候需要對方法內new出來的對象進行隔離,這是我們需要使用PowerMockito。
添加依賴
<dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-junit4</artifactId> <version>1.7.4</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-mockito</artifactId> <version>1.7.4</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>1.10.19</version> <scope>test</scope> </dependency>
注意:版本要對應一致,不同的版本可能出現啟動失敗!
被測試類
@Slf4j @Component public class UserService { @Autowired private UserMapper userMapper; public User userCreate(String name, String password) throws BusinessException { User user = userMapper.query(name, password); if(user == null){ user = new User(); user.setName(name); user.setPassword(password); user.setGroup(1); user.setCreateTime(new Date()); TokenApi tokenApi = new TokenApi();//測試時需要隔離此類,此類依賴其他服務! try { user.setToken(tokenApi.getToken()); } catch (Exception e) { throw new BusinessException("-2","獲取token失敗"); } try { userMapper.create(user); } catch (Exception e) { throw new BusinessException("-1","系統異常"); } } return user; } }
測試類
@RunWith(PowerMockRunner.class) @PrepareForTest({UserService.class})//此注解內配置的是需要mock的new對象代碼所在的類 public class UserServiceTest { @InjectMocks private UserService userService; @Mock private UserMapper userMapper; private TokenApi tokenApi; @Test public void userCreate(){ String name = "xiaoming"; String password = "000000"; when(userMapper.query(name, password)).thenReturn(null); tokenApi = PowerMockito.mock(TokenApi.class); try { PowerMockito.whenNew(TokenApi.class).withNoArguments().thenReturn(tokenApi); } catch (Exception e) { e.printStackTrace(); } PowerMockito.when(tokenApi.getToken()).thenReturn("11111111"); User user = userService.userCreate(name, password); assertEquals(name,user.getName); assertEquals("11111111",user.getToken()); } }
when() 跟 PowerMockito.when() 是兩個不同的方法!when() = Mockito.when()
到此,相信大家對“java中PowerMockito模擬方法內new對象實例”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。