powerMock不仅支持接口mock,final类、静态类、静态方法、私有方法都支持mock,还是很强大的;

1.gradle引用:

  1. myonlycompile('org.powermock:powermock-module-junit4:1.6.4')
    myonlycompile('org.powermock:powermock-api-mockito:1.6.4')

2.测试代码

  1. @RunWith(PowerMockRunner.class)
  2. @PrepareForTest(mockTest.FinalUser.class)
  3. public class mockTest {
  4. @Test
  5. public void testMockInterface() {
  6. IService svc = PowerMockito.mock(IService.class);
  7. PowerMockito.when(svc.getMsg("aa")).thenReturn("my name is aa");
  8.  
  9. assertEquals("my name is aa", svc.getMsg("aa"));
  10. }
  11.  
  12. @Test
  13. public void testMockClass() {
  14. User user = PowerMockito.mock(User.class);
  15. PowerMockito.when(user.getCount()).thenReturn(5);
  16. assertEquals(5, user.getCount());
  17. }
  18.  
  19. @Test
  20. public void testMockFinalClass() {
  21. FinalUser user = PowerMockito.mock(FinalUser.class);
  22. PowerMockito.when(user.getCount()).thenReturn(5);
  23. assertEquals(5, user.getCount());
  24.  
  25. PowerMockito.when(user.getNum()).thenReturn(8);
  26. assertEquals(8, user.getNum());
  27. }
  28.  
  29. @Test
  30. public void testMockStaticClass() {
  31. PowerMockito.mockStatic(FinalUser.class);
  32. PowerMockito.when(FinalUser.getName()).thenReturn("MY");
  33. assertEquals("MY", FinalUser.getName());
  34. }
  35.  
  36. static interface IService {
  37. String getMsg(String msg);
  38.  
  39. void addMsg(String msg);
  40. }
  41.  
  42. static class User {
  43. private String name;
  44.  
  45. public int getCount() {
  46. throw new NotImplementedException();
  47. }
  48. }
  49.  
  50. static final class FinalUser {
  51. private String name;
  52.  
  53. public static String getName() {
  54. throw new NotImplementedException();
  55. }
  56.  
  57. public int getCount() {
  58. throw new NotImplementedException();
  59. }
  60.  
  61. private int getNum(){
  62. throw new NotImplementedException();
  63. }
  64. }
  65. }

如果是静态类、方法、final类、私有方法的需要加上

@RunWith(PowerMockRunner.class)
@PrepareForTest(mockTest.FinalUser.class)

Mock利器:PowerMock的更多相关文章

  1. mock测试之powermock

    由于公司框架依赖别的模块, 导致我们开发老是需要跟着他们的脚步, 所以我的上级领导提出这个方案说直接跳过他们,我们自己在本地测试,然后就找了它, 导入相关jar <dependency> ...

  2. Mock、Powermock使用汇总

    背景 工作中经常用到单测,某对单测掌握的不好,所以趁此学习.总结一下. 主要参考:https://www.jianshu.com/p/0c2480b1709e.https://www.cnblogs. ...

  3. 前端mock利器:randomjson

    randomjson的应用场景 前后端分离时,前端根据后端提供的数据模型模拟后端请求.如果数据写死,每次返回的都一样,这个时候randomjson就能派上用场了.在前端规定数据类型,每次用random ...

  4. 有效使用Mock编写java单元测试

    Java单元测试对于开发人员质量保证至关重要,尤其当面对一团乱码的遗留代码时,没有高覆盖率的单元测试做保障,没人敢轻易对代码进行重构.然而单元测试的编写也不是一件容易的事情,除非使用TDD方式,否则编 ...

  5. 什么是 Mock 测试?

    什么是 Mock? 作为动词,Mock 是模拟.模仿的意思. 作为名词,Mock 是能够模仿真实对象行为的模拟对象. 那么,在软件测试中,Mock 所模拟的对象是什么呢? 模拟的是 SUT(Syste ...

  6. 推荐一款数据mock框架,无需任何依赖,贼牛逼

    fox-mock 是基于Java Agent实现的自测,联调Mock利器.能解决你的这些问题: 开发过程中,依赖了下游多个接口,想跑个单测都必须得等下游把服务部署好 联调过程中,下游某个接口出问题,阻 ...

  7. Android单元测试与模拟测试详解

    测试与基本规范 为什么需要测试? 为了稳定性,能够明确的了解是否正确的完成开发. 更加易于维护,能够在修改代码后保证功能不被破坏. 集成一些工具,规范开发规范,使得代码更加稳定( 如通过 phabri ...

  8. 8点了解Java服务端单元测试

    一. 前言 单元测试并不只是为了验证你当前所写的代码是否存在问题,更为重要的是它可以很大程度的保障日后因业务变更.修复Bug或重构等引起的代码变更而导致(或新增)的风险. 同时将单元测试提前到编写正式 ...

  9. Mock之easymock, powermock, and mockito

    easymock, powermock, and mockito Easymock Class Mocking Limitations To be coherent with interface mo ...

随机推荐

  1. 公司测试服务器 vimrc 配置文件

    " /etc/vimrc (configuration file for vim only) " author: Klaus Franken <kfr@suse.de> ...

  2. putty(winscp)无法连接到linux(ubuntu)

    为了能在自己笔记本电脑上兼容公司的用64位系统编译出来的MapReduce程序,我把自己原来32位的ubuntu虚拟机删除后,安装了目前最新的ubuntu-14.04.2-desktop-amd64. ...

  3. 解析theme()

    drupal_render()只是对theme()的调用做了包装,真正做任务的还是theme(). function theme($hook, $variables = array()) { ... ...

  4. openvpn mac客户端tunnelblick连接后自动添加路由

    在openvpn 的服务器配置文件添加配置设置客户端连接后自动添加一条路由 示例: vim /etc/openvpn/server.conf # Push routes to the client t ...

  5. CentOS 6.3下Samba服务器的安装与配置(转)

    一.简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的 ...

  6. 点滴积累【JS】---JS实现仿百度模糊搜索效果

    效果: HTML代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="In ...

  7. hadoop修改

    https://github.com/medcl/elasticsearch-analysis-ik/releases hadoop-/etc/hadoop/core-site.xml <con ...

  8. Android四大组件全然解析(一)---Activity

    本文參考\android\android\frameworks\base\core\java\android\app\Activity.java文件里的类凝视.以及android/frameworks ...

  9. Struts2初学 struts.xml详解 一

    一.简介    Struts 2是一个MVC框架,以WebWork设计思想为核心,吸收了Struts 1的部分优点 二.详解    首先让我们看一下一个简单的struts.xml文件的结构  < ...

  10. GetLastError 错误码大全(转载)

    转载自:GetLastError GetLastError GetLastError返回的值通过在api函数中调用SetLastError或SetLastErrorEx设置.函数   并无必要设置上一 ...