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. 模式的秘密-代理模式(2)-JDK动态代理

    代理模式-动态代理 (1) (2) 代码实践动态代理: 第一步:被代理类的接口: package com.JdkProxy; public interface Moveable { void move ...

  2. [转载]编写高性能js

    一.执行效率 1. DOM 1.1 使用DocumentFragment优化多次append 说明:添加多个dom元素时,先将元素append到DocumentFragment中,最后统一将Docum ...

  3. PHP-php.ini中文版

    今天细看了下配置文件 有很多没用过的 就从网上搜了一篇 常看看 ;;;;;;;;;;;;;;;; 简介 ;;;;;;;;;;;;;;;;; 本文并非是对英文版 php.ini 的简单翻译,而是参考了众 ...

  4. Python 以指定的概率选取元素

    Python 以指定的概率选取元素 Problem You want to pick an item at random from a list, just about as random.choic ...

  5. C++中四种类型转换以及const_cast是否能改变常量的问题

    we have four specific casting operators:dynamic_cast, reinterpret_cast, static_cast and const_cast. ...

  6. sql中一列拆成两列

    declare @table table (name nvarchar(4))insert into @tableselect '张三' union allselect '李四' union alls ...

  7. jsp常用标签和标签库及javaBean规范

    1 常用标签forward,pararm,include <jsp:forward page=""></jsp:forward> <jsp:param ...

  8. Android学习笔记(八)——显示运行进度对话框

    显示运行进度对话框 我们经常有这种经历:运行某一应用程序时.须要等待一会,这时会显示一个进度(Please Wait)对话框,让用户知道操作正在进行. 我们继续在上一篇中的程序中加入代码~ 1.在上一 ...

  9. SCUT入门-协议生成器配置

    协议生成器需要放在IIS里才能正常使用.具体目录在:Scut\Source\Tools\ContractTools\release 关于具体细节看这篇:https://github.com/ScutG ...

  10. java工程资源文件夹嵌套建立!

    做过一遍忘了,找了半天!记这里,看你还忘不忘!