千家信息网

java中PowerMockito模拟方法内new对象实例

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,本篇内容主要讲解"java中PowerMockito模拟方法内new对象实例",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"java中PowerMockit
千家信息网最后更新 2025年01月23日java中PowerMockito模拟方法内new对象实例

本篇内容主要讲解"java中PowerMockito模拟方法内new对象实例",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"java中PowerMockito模拟方法内new对象实例"吧!

在做单元测试中有时候需要对方法内new出来的对象进行隔离,这是我们需要使用PowerMockito。

  1. 添加依赖

            org.powermock            powermock-module-junit4            1.7.4            test                            org.powermock            powermock-api-mockito            1.7.4            test                            org.mockito            mockito-core            1.10.19            test        

注意:版本要对应一致,不同的版本可能出现启动失败!

  1. 被测试类

@Slf4j@Componentpublic 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;        }}
  1. 测试类

@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对象实例"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

0