powerMock比easyMock和Mockito更强大(转)
powerMock是基于easyMock或Mockito扩展出来的增强版本,所以powerMock分两种类型,如果你习惯于使用easyMock的,那你就下载基于easyMock的powerMock,反之你喜欢用mockito的话就下载另一种PowerMock.
powerMock之所以说它更强大是因为它解决了easyMock和Mockito没有解决的问题,就是可以模仿static,private和final的方法。举例如下:
public class User{
private User user=new User();
public User(){
System.out.println("new User()");
}
public static User getInstance(){
return user;
}
private String getHello(String h)
{
return "hello "+h;
}
public String sayHello(String h)
{
return getHello(h);
}
}
public classSubUser extends User{
public SubUser(){
System.out.println("new SubUser()");
}
}
测试用例,注意以下例子需要用junit4才能运行,如是不行的话建议重下一个jar包:junit-4.0.jar
@RunWith(PowerMockRunner.class)//powerMock包里有两个PowerMockRunner,所以如果你的不能运行,请更换另一个试试 @PrepareForTest(User.class) public class TestUser extends TestCase { User user; //测试静态方法 @Test public void testVerify() { mockStatic(User.class); when(User.getInstance()).thenReturn(new SubUser()); User user=User.getInstance();
verifyStatic();
}
//测试new一个对象
@Test public void testWhenNew() { try { mockStatic(User.class); whenNew(User.class).withNoArguments().thenReturn(new SubUser()) ; user=new User(); verifyNew(User.class).withNoArguments(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
@Test//测试私有方法 public void testPrivate() { User u = PowerMockito.spy(new User()); try { PowerMockito.doReturn("hello world").when(u, "getHello", "hello"); System.out.println(u.sayHello("hello"));
PowerMockito.verifyPrivate(u, times(1)).invoke("getHello", "hello"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
}
输出---------------------------------
new SubUser()
new SubUser()
hello world
其它用法请参考这里:http://code.google.com/p/powermock/wiki/MockitoUsage13
以上为个人的一点经验,有可能表述有误,敬请指正
http://blog.csdn.net/Ant_cc/article/details/6977367
http://dlwt.csdn.net/fd.php?i=686345406083133&s=8d1bea4adab5d744f78c6f60e13d3624
powerMock比easyMock和Mockito更强大(转)的更多相关文章
- PowerMock与EasyMock的应用(转)
Leader请求在做Junit测试的时辰,Mock掉各个办法之间的依附.这两天进修了下PowerMock的应用. PowerMock是EasyMock的一个扩大,参加了static,final,pri ...
- Python的regex模块——更强大的正则表达式引擎
Python自带了正则表达式引擎(内置的re模块),但是不支持一些高级特性,比如下面这几个: 固化分组 Atomic grouping 占有优先量词 Possessive quantifi ...
- 思维导图软件TheBrain 8全新发布 提供更强大的信息管理
TheBrain思维导图软件是全球唯一一款动态的网状结构的思维导图软件,广泛用于学习.演讲.项目管理.会议.需求调研与分析等.其独特的信息组织方式使得用户可以创建并连接到数以万计的数字想法,为此在全球 ...
- cVim—Chrome上更强大的vim插件
cVim——Chrome上更强大的vim插件 介绍 也许很多人在chrome上都用过类似Vimium, ViChrome的插件,这些插件的目的都差不多,就是在浏览器中提供一些类似vim的操作来提高效率 ...
- 功能更强大的格式化工具类 FormatUtils.java
package com.util; import java.text.DecimalFormat; import java.text.ParseException; import java.text. ...
- 10个工具让你的 shell 脚本更强大
10个工具让你的 shell 脚本更强大 很多人误以为shell脚本只能在命令行下使用.其实shell也可以调用一些GUI组件,例如菜单,警告框,进度条等等.你可以控制最终的输出,光标位 置还有各种输 ...
- 让Docker功能更强大的10个开源工具
让Docker功能更强大的10个开源工具 更好的管理.Web前端程序.更深入地了解容器应用程序,Docker生态系统正在迅速发展,这还得归功于其充满活力的开源社区. 软件项目的成功常常根据其催生的生态 ...
- summerDao-比mybatis更强大无需映射配置的dao工具
summerDao是summer框架中的一个数据库操作工具,项目地址:http://git.oschina.net/xiwa/summer. 怎么比mybatis更强大,怎么比beetlsql更简单, ...
- 比ngx_http_substitutions_filter_module 更强大的替换模块sregex的replace-filter-nginx-module
之前写过nginx反代替换的教程(传送门),使用了ngx_http_substitutions_filter_module模块.不过这货只能替换同一行,具有局限性-_-# 现在一个更强大的替换模块来了 ...
随机推荐
- C# inherit
Case:class A has a construct. class B is inherit from class A and B also has a construct. What's the ...
- 多条件搜索拼接Sql语句
1. 如下实例: 1.1 如下图所示:[通过用户输入的数据拼接Sql搜索语句] 1.2 private void button2_Click( ...
- CButtonST的用法详解【转】
在想使用CButtonST的工程中加入BtnST.h.BtnST.cpp.BCMenu.h.BCMenu.cpp4个文件.2个类. 1. 在按钮上加入Icon,使Icon和文字同时显示 假设按钮ID为 ...
- NSArray的4种遍历方式
前言:NSArray对应的是java的List,不同的是其元素不能更改,不过其派生类NSMutableArray可以更改,遍历的方式跟java的List基本一样 一. for循环 Student * ...
- [Swust OJ 412]--医院设置(floyd算法)
题目链接:http://acm.swust.edu.cn/problem/412/ Time limit(ms): 1000 Memory limit(kb): 65535 Description ...
- ibatis缓存配置
一.sqlmapconfig.xml <sqlMapConfig> <settings useStatementNamespaces="true" cacheM ...
- PHP函数积累
1.mt_rand(min,max):随机返回min,max之间的随整数机数. 2.date('Y-m-d H:m:s',时间戳),将时间戳格式化为相应的时间格式.time()取得时间戳 3.arra ...
- javascript单元测试(转)
1. 什么是单元测试 在计算机编程中,单元测试(又称为模块测试)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作.程序单元是应用的最小可测试部件.在过程化编程中,一个单元就是单 ...
- PCB设计铜铂厚度、线宽和电流关系
以下总结了网上八种电流与线宽的关系公式,表和计算公式,虽然各不相同(大体相近),但大家可以在实际的PCB板设计中,综合考虑PCB板的大小,通过电流,选择一个合适的线宽. 一.PCB电流与线宽 PCB载 ...
- Qt打开外部程序和文件夹需要注意的细节(Qt调用VC写的动态库,VC需要用C的方式输出函数,否则MinGW32编译过程会报错)
下午写程序中遇到几个小细节,需要在这里记录一下. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 QProcess *process = new QProcess(this ...