PowerMock使用

注:这篇文档结合PowerMock一起学习,这里只介绍使用。

  1. 使用心得
@RunWith(PowerMockRunner.class)
@PrepareForTest({Configuration.class})
public class ConWendaDataResourceTest {

    注:@InjectMock的作用是当我们@Mock的对象需要在其他类的方法中使用时,可以自动将Mock的对象注入到@InjectMock注解类的方法中。如我们Mock的courseRepository对象在ConWendaDataServiceImpl的方法中需要使用时就需要用@InjectMock注解。
    @InjectMocks
    private ConWendaDataServiceImpl conWendaDataServiceImpl=new ConWendaDataServiceImpl();

    注:@Mock的作用是自动进行PlatformUserDetails user=PowerMockito.mock(PlatformUserDetails.class);
    省去了在代码中PowerMockito.mock()。但是静态类还需要显示声明:PowerMockito.mockStatic(Configuration.class);
    @Mock
    private ICourseRepository courseRepository;

    @Mock
    private PlatformUserDetails user;


    @Test
    public void wendaTabTest() throws Exception {

        long userId=4874546;
        Set<String> courseIdsSet=new HashSet<String>();
        courseIdsSet.add("235");
        courseIdsSet.add("236");
        courseIdsSet.add("237");
        courseIdsSet.add("238");
        courseIdsSet.add("239");
//省去了显示声明:      PlatformUserDetails user=PowerMockito.mock(PlatformUserDetails.class);
        PowerMockito.when(user.getUserId()).thenReturn(Long.valueOf(4874546));
        PowerMockito.when(user.getLoginName()).thenReturn("");
//      ICourseRepository courseRepository=PowerMockito.mock(CourseRepositoryImpl.class);
//注:getUserLearnedCourseIds方法就是@InjectMocks注解类中的方法。     PowerMockito.when(courseRepository.getUserLearnedCourseIds(String.valueOf(userId))).thenReturn(courseIdsSet);
注:Configuration静态类还需要显示声明。
    PowerMockito.mockStatic(Configuration.class);
        PowerMockito.when(Configuration.getArray("")).thenReturn(new String [] {""});
        System.out.println(conWendaDataServiceImpl.getWendaTabDataFromWenda(user,0,10));

        }

}
  1. 使用心得
@RunWith(PowerMockRunner.class)
@PrepareForTest({ElementServiceImpl.class, PlatformSecurityUtils.class, ElementConvert.class,
        ObjectMapper.class, Configuration.class, ConWendaDataServiceImpl.class})
public class ConWendaDataServiceImplTest {

    @InjectMocks
    private IElementService elementService = PowerMockito.spy(new ElementServiceImpl());

    @InjectMocks
    private IConWendaDataService conWendaDataService = PowerMockito.spy(new ConWendaDataServiceImpl());

    @Mock
    private ElementMapper elementMapper;

    /**
     * 用于在service层调用courseMapper的时候使用
     */
    @Mock
    private CourseMapper courseMapper;


    @Test
    public void testCreateElement() throws Exception {
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("name", "name");
        params.put("description", "123");
        Element element = elementService.createElement(params);
        assertNotNull(element);
    }

    /**
     * 对问答接口进行测试
     *
     * @throws Exception
     */
    @Test
    public void wendaTabTest() throws Exception {

        /**
         * 获取邀请回答信息测试
         */
         System.out.println(conWendaDataService.getAnswerPeopleInfo(Long.valueOf("265")));

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值