java-PowerMockito来mock 构造函数的问题

问题描述

PowerMockito来mock 构造函数的问题

public class HttpProtocolHandler {

private static HttpProtocolHandler httpProtocolHandler  = new HttpProtocolHandler();

public static HttpProtocolHandler getInstance() {
    return httpProtocolHandler;
}

   /**
 * 私有的构造方法
 */
private HttpProtocolHandler() {
    connectionManager= new PoolingHttpClientConnectionManager();
    connectionManager.setMaxTotal(200);
}

public TwoTuple<Integer,String> execute(HttpUriRequest request) throws Exception {

   //中间省略
    return new TwoTuple<Integer,String>(HttpStatus.SC_OK,null);
}
}

被测代码如上,测试代码如下,但是mock不生效。
我现在要mock HttpProtocolHandler.getInstance().execute(httpPost)的返回结果,测试代码哪里不对,新手求大神帮助解决,谢谢

@RunWith(PowerMockRunner.class)

@PrepareForTest(HttpProtocolHandler.class)
public class httpTest(){

@Test
public void test(){

    TwoTuple<Integer,String> rep = new TwoTuple<Integer, String>(1,"test1234567");

    HttpProtocolHandler mock = PowerMockito.spy(HttpProtocolHandler.getInstance());

    PowerMockito.whenNew(HttpProtocolHandler.class).withNoArguments().thenReturn(mock);
    PowerMockito.doReturn(rep).when(mock).execute((HttpUriRequest)Mockito.any());

    String url = "www";
    HttpPost httpPost = new HttpPost(url);
    TwoTuple<Integer,String> result11 = HttpProtocolHandler.getInstance().execute(httpPost);
    logger.info(result11.toString())
}

}

解决方案

http://blog.csdn.net/knighttools/article/details/44630975

时间: 2024-11-02 16:16:05

java-PowerMockito来mock 构造函数的问题的相关文章

Java类中的构造函数?

问题描述 Java类中的构造函数? class Circle { double radius; Circle() { radius = 1.0; } Circle(double newRadius) { radius = newRadius;//为什么不写成 newRadius = radius? } } 解决方案 可以是可以,但是如果是newRadius = radius,则代表将radius的值赋给newRadius,在初始化的时候Circle circle = new Circle(11)

用PowerMockito来mock私有方法(转)

   话说我们做的所谓的接口测试真的是不伦不类啊,测的是controller层,那叫接口木??!!可是老大们说写的是接口测试,那就接口吧!     自接手写这个接口测试不久,很多人,包括一个关系比较好的架构师就跟我说,写这个很麻烦啊,代码很乱,你得mock一堆.     既然已经跳进去了,那就游一会儿吧.为了mock,可谓想尽了办法啊,从一般的mock工具mockito,到java的反射,最后发现一个强大的工具--PowerMockito   他居然能够mock私有方法.虽然,最后被老大们说私有

Java单元测试(Junit+Mock+代码覆盖率)

单元测试是编写测试代码,用来检测特定的.明确的.细颗粒的功能.单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的. 单元测试不仅仅用来保证当前代码的正确性,更重要的是用来保证代码修复.改进或重构之后的正确性. 一般来说,单元测试任务包括 接口功能测试:用来保证接口功能的正确性. 局部数据结构测试(不常用):用来保证接口中的数据结构是正确的 比如变量有无初始值 变量是否溢出 边界条件测试 变量没有赋值(即为NULL) 变量是数值(或字符) 主要边界:最小值,最大值,无穷大(对于DOUB

java超类与子类构造函数的问题

问题描述 如果超类中没有默认构造函数.那么子类一定不能存在默认的构造函数么?子类就必须使用super()或者自己创建构造函数么? 解决方案 解决方案二:怎么会呢?都可以不定义构造器的.解决方案三:如果一个类在定义时没有定义构造方法,那么他的默认构造就是无参的构造方法:(1)子类只继承父类的默认(缺省)构造函数,即无形参构造函数.如果父类没有默认构造函数,那子类不能从父类继承默认构造函数.(2)子类从父类处继承来的父类默认构造函数,不能成为子类的默认构造函数.(3)在创建对象时,先调用父类默认构造

简单介绍如何使用PowerMock和Mockito来mock 1. 构造函数 2. 静态函数 3. 枚举实现的单例 4. 选择参数值做为函数的返回值(转)

本文将简单介绍如何使用PowerMock和Mockito来mock1. 构造函数2. 静态函数3. 枚举实现的单例4. 选择参数值做为函数的返回值5. 在调用mock出来的方法中,改变方法参数的值 一点简要说明:Mockito其实已经可以满足大部分的需求,但是它的实现机制是使用cglib来动态创建接口的类的实例.但是这种实现方式不能用于构造函数和静态函数,因为那需要使用类的字节码(比如使用javassist). 所以我们才需要结合使用PowerMock. 1. mock构造函数, 如果有代码没有

关于java中list构造函数的问题

问题描述 java中list的构造函数list(introws,booleanmultipleMode),第一个参数rows是定义显示的项数,也就是说如果这样定义list(4,false)之后,列表中应该显示4项,当add超过四项时,为什么所有的添加项都能显示呢?如果这样的话,这个参数还有什么意义呢?例如:Listl=newList(4,false);for(inti=1;i<10;i++){l.add("Listitem"+i);}add("East",l)

java的“别名”以及clone机制

什么是别名?用个简单的例子说明public class Aliases{ int i; public Aliases() { i=1; } public Aliases(int i) { this.i=i; } public static void main(String args[]) { Aliases A=new Aliases(); Aliases B=A; //A和B指向了同一个对象,A和B互为别名 System.out.println("A.i and B.i:"+A.i+

php 构造函数支持不同个数参数的方法

php 构造函数支持不同个数参数方法 原理:在__construct中使用 func_num_args 获取参数个数,再根据参数个数执行不同的调用.参数值使用func_get_arg() 方法获得. demo: <?php class demo{ private $_args; public function __construct(){ $args_num = func_num_args(); // 获取参数个数 // 判断参数个数与类型 if($args_num==2){ $this->_

Java对象池技术的原理及其实现

摘要 本文在分析对象池技术基本原理的基础上,给出了对象池技术的两种实现方式.还指出了使用对象池技术时所应注意的问题. 关键词 对象池:对象池技术:Java 对象:性能 Java对象的生命周期分析 Java对象的生命周期大致包括三个阶段:对象的创建,对象的使用,对象的清除.因此,对象的生命周期长度可用如下的表达式表示:T = T1 + T2 +T3.其中T1表示对象的创建时间,T2表示对象的使用时间,而T3则表示其清除时间.由此,我们可以看出,只有T2是真正有效的时间,而T1.T3则是对象本身的开