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

时间: 2024-11-05 17:23:24

powerMock比easyMock和Mockito更强大(转)的相关文章

pandas的筛选功能,跟excel的筛选功能类似,但是功能更强大。

Select rows from a DataFrame based on values in a column -pandas 筛选 https://stackoverflow.com/questions/17071871/select-rows-from-a-dataframe-based-on-values-in-a-column-in-pandas pandas的筛选功能,跟excel的筛选功能类似,但是功能更强大. 在SQL数据中, 我们可以用这样的语句: select * from

10个工具让你的 shell 脚本更强大

10个工具让你的 shell 脚本更强大 很多人误以为shell脚本只能在命令行下使用.其实shell也可以调用一些GUI组件,例如菜单,警告框,进度条等等.你可以控制最终的输出,光标位 置还有各种输出效果.下面我将介绍一些工具,帮助你创建强大的,互动的,用户友好的 Unix/Linux shell脚本.我在FreeBSD和Linux下测试过这些工具,不过其他UNIX系列的操作系统应该都支持的. 1. notify-send 命令 这个命令可以让你通过通知进程发送一个桌面通知给用户.这可以用来向

一个功能更强大的函数,也是用正则表达式写的

<% Option Explicit Function stripHTML(strtext) dim arysplit,i,j, strOutput arysplit=split(strtext,"<") if len(arysplit(0))>0 then j=1 else j=0 for i=j to ubound(arysplit) if instr(arysplit(i),">") then arysplit(i)=mid(arysp

让XP启动密码更强大的方法

我们经常可以在网上看见各种破解Windows XP登录名和密码的方法,这让我们对Windows XP的安全性大打折扣.其实,Windows XP还有一个更安全的"启动密码"方法,这个密码显示在用户密码前,而且还可以生成钥匙盘,如果设置它,你的Windows XP就更加安全了,下面来看看怎么制作这个强大的"启动密码". 1.设置启动密码 依次选择"开始→运行",在"运行"对话框中输入"Syskey"命令,接着

夏日葵电商:了解这些,让你的微信分销系统更强大

夏日葵电商:了解这些,让你的微信分销系统更强大 随着网购的不断普及,很多传统企业都开始转向互联网销售,其中微信分销系统是经常被选择的对象.但是你真的知道微信分销系统的可以做什么不可以做什么?今天就让夏日葵电商为你总结一下. 微信分销系统不可以做的: ①不可以全部照搬他人的模式.微信分销系统不一定具有普适性,适合其他企业的不一定就适合本企业,要从实际出发,具体问题具体分析. ②不可以盲目走促销模式.不停的做促销似乎已经是现在电商行业的一种普遍现象了,一味的追求销量而不考虑成本问题是行不通的,关键还

Python的regex模块——更强大的正则表达式引擎(未完待写)

Python自带了正则表达式引擎(内置的re模块),不过支持的特性比较单薄,以下这些特性都不支持: 固化分组    Atomic grouping 占有优先量词    Possessive quantifiers 可变长逆序环视    Variable-length lookbehind 递归匹配    Recursive patterns Matthew Barnett为Python写了一个更强大正则表达式引擎——regex模块,可以替代内置的re模块.除了上面说到的几个特性,还有很多新东西.

bootstrap3-dialog:更强大、更灵活的模态框

用过bootstrap框架的同学们都知道,bootstrap自带的模态框用起来很不灵活,可谓鸡肋的很.但nakupanda开源作者封装了一个更强大.更灵活的模态框——bootstrap3-dialog. 一.源码下载 bootstrap3-dialog git下载地址 二.效果展示 1.error警告框 2.confirm确认选择框 3.Success提示框 4.ajax加载远程页面弹出框 5.ajax加载自定义页面弹出框 三.使用方法 bootstrap3-dialog的demo中已有很详细的

功能更强大的格式化工具类 FormatUtils.java

package com.util; import java.text.DecimalFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * 功能更强大的格式化工具类 */ public class FormatUtils { private static SimpleDateFormat second = new SimpleDateForma

Android内存优化9 内存检测工具3 MAT比Menmery Monitor更强大

在Android性能优化第(一)篇---基本概念中讲了JAVA的四大引用,讲了一下GCRoot,第二篇Memory Monitor检测内存泄露仅仅说了Menmery Monitor的使用,这篇博客谈一下MAT来寻找内存泄露,相对来说,Memory Monitor没有MAT强大,但是在开始介绍MAT之前,上两篇没有说清楚的问题先说一下. GC回收对可回收对象的判定什么样的对象是可以被回收的?当然是GC发现通过任何referencechain(引用链)无法访问某个对象的时候,该对象即被回收.名词GC