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

1.gradle引用:

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

2.测试代码

@RunWith(PowerMockRunner.class)
@PrepareForTest(mockTest.FinalUser.class)
public class mockTest {
@Test
public void testMockInterface() {
IService svc = PowerMockito.mock(IService.class);
PowerMockito.when(svc.getMsg("aa")).thenReturn("my name is aa"); assertEquals("my name is aa", svc.getMsg("aa"));
} @Test
public void testMockClass() {
User user = PowerMockito.mock(User.class);
PowerMockito.when(user.getCount()).thenReturn(5);
assertEquals(5, user.getCount());
} @Test
public void testMockFinalClass() {
FinalUser user = PowerMockito.mock(FinalUser.class);
PowerMockito.when(user.getCount()).thenReturn(5);
assertEquals(5, user.getCount()); PowerMockito.when(user.getNum()).thenReturn(8);
assertEquals(8, user.getNum());
} @Test
public void testMockStaticClass() {
PowerMockito.mockStatic(FinalUser.class);
PowerMockito.when(FinalUser.getName()).thenReturn("MY");
assertEquals("MY", FinalUser.getName());
} static interface IService {
String getMsg(String msg); void addMsg(String msg);
} static class User {
private String name; public int getCount() {
throw new NotImplementedException();
}
} static final class FinalUser {
private String name; public static String getName() {
throw new NotImplementedException();
} public int getCount() {
throw new NotImplementedException();
} private int getNum(){
throw new NotImplementedException();
}
}
}

如果是静态类、方法、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. 基于终端的日志工具logview

    概述 logview是一个Shell脚本编写的基于终端的日志工具, 具有终端通知, email通知, 错误信息颜色配置, 以及灵活强大的监控配置. 还可以灵活的配置脚本监控的时间, 以及错误发生时需要 ...

  2. springmvc验证数据

    1.引入jar包 com.springsource.javax.validation-1.0.0.GA.jar  规范(只是定义) hibernate-validator-4.1.0.Final.ja ...

  3. ArcGis10.0常见错误

    1. 问题:  Arcgis10.0 组件初始化失败 解决方法:  ESRI.ArcGIS.RuntimeManager.BindLicense(ESRI.ArcGIS.ProductCode.Eng ...

  4. Aperture Time与NPLC

    NPLC工频周期数 NPLC是采样电源的周期倍数,N代表是多少倍,PLC与采样电源有关 交流电源的干扰是很厉害的.为了减少交流电源的干扰,一个常用的方法就是把测量周期尽可能的取成交流周波的整数倍,这样 ...

  5. Spring Cloud(三):服务提供与调用

    上一篇文章我们介绍了eureka服务注册中心的搭建,这篇文章介绍一下如何使用eureka服务注册中心,搭建一个简单的服务端注册服务,客户端去调用服务使用的案例. 案例中有三个角色:服务注册中心.服务提 ...

  6. 【HDU 2586】LCA模板

    在一棵树上 求2个点的最短距离.那么首先利用LCA找到2个点的近期公共祖先 公式:ans = dis(x) + dis(y) - 2 * dis(lca(x,y)) 这里的dis(x)指的上x距离根节 ...

  7. SQL命令查看Mysql数据库大小

    SQL命令查看Mysql数据库大小的方法. 要想知道每个数据库的大小的话,步骤如下:1.进入information_schema 数据库(存放了其他的数据库的信息)use information_sc ...

  8. 关于搭配junit 和JUnit报initializationError的解决方法

    关于junit是什么就不复述了,网上有 junit的source code是可以下载的,各个版本都有 地址:https://github.com/junit-team 通过junit 的source ...

  9. nyoj 760 See LCS again

    See LCS again 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 There are A, B two sequences, the number of ele ...

  10. swift 属性和方法

    属性和常量 如果创建了一个结构体的实例并赋值给一个常量,则无法修改实例的任何属性: let rangeOfFourItems = FixedLengthRange(firstValue: 0, len ...