(一)PowerMockito进行UT测试如何略过方法,使方法不被执行(含私有方法):

PowerMockito.doNothing().when(TestMock.class,"foo1");//仅适用于方法返回值为void类型

PowerMockito.suppress(PowerMockito.methods(TestMock.class, "foo1"));//适用于任何方法

(二)调用私有方法的两种方式:1.JDK反射 2.PowerMockito自带method接口

//样例1:JDK反射

Method method = TestMock.class.getDeclaredMethod("testPrivate1");

method.setAccessible(true);

String invoke = (String) method.invoke(TestMock.class, "hello world");

System.out.println(invoke)

  如果testPrivate1是静态私有方法,可以用上述调用方法,

  如果是非静态私有方法,String invoke = (String) method.invoke(TestMock.class, "hello world");这里的class应该改为对象

//******PowerMockito method接口*******

//样例2:基本类型参数

Method method = PowerMockito.method(TestMock.class,"testPrivate2", String.class);

String invoke = (String) method.invoke(TestMock.class, "hello world");

System.out.println(invoke);

List<String> dataList = new ArrayList<String>();

dataList.add("1");

dataList.add("2");

dataList.add("3");

//样例3:常见应用类型参数

Method method = PowerMockito.method(TestMock.class,"testPrivate3", List.class);

String invoke = (String) method.invoke(TestMock.class, dataList);

System.out.println(invoke);

//样例4:不带泛型

Method method = PowerMockito.method(TestMock.class,"testPrivate4", ArrayList.class);

String invoke = (String) method.invoke(TestMock.class, dataList);

System.out.println(invoke);

//样例5:带泛型(常见错误用法:ArrayList<String>.class)

Method method = PowerMockito.method(TestMock.class,"testPrivate4", new ArrayList<String>().getClass());

String invoke = (String) method.invoke(TestMock.class, dataList);

System.out.println(invoke);

//样例6:数组参数

Method method = PowerMockito.method(TestMock.class, "testPrivate5", String[].class);

String invoke = (String) method.invoke(TestMock.class, new Object[]{new String[]{"1","2","3"}});//注意invoke方法入参,此处必须为new Object[]{},否则会出现参数异常

System.out.println(invoke);

     (三)Whitebox.setInternalState接口用法

 

该方法可以向被测试类注入引用类型,不管被修改的成员变量是否是final类型。如下:向DataFileHandler类的private static final logger成员变量注入fakeLogger对象。

FakeLogger fakeLogger = new FakeLogger(DataFileHandler.class.getName());

Whitebox.setInternalState(DataFileHandler.class, "logger", fakeLogger);

注意:该接口无法向被测类的基本类型的final成员变量注入,如:private static final String,但可以向非final的成员变量注入,如:private stat

UT技巧的更多相关文章

  1. 使用powershell提权的一些技巧

    原文:http://fuzzysecurity.com/tutorials/16.html 翻译:http://www.myexception.cn/windows/1752546.html http ...

  2. JavaScript 开发人员需要知道的简写技巧

    本文来源于多年的 JavaScript 编码技术经验,适合所有正在使用 JavaScript 编程的开发人员阅读. 本文的目的在于帮助大家更加熟练的运用 JavaScript 语言来进行开发工作. 文 ...

  3. 19 个 JavaScript 编码小技巧

    这篇文章适合任何一位基于JavaScript开发的开发者.我写这篇文章主要涉及JavaScript中一些简写的代码,帮助大家更好理解一些JavaScript的基础.希望这些代码能从不同的角度帮助你更好 ...

  4. 场效应管种类-场效应管N、P沟道与增强、耗尽型工作原理等知识详解 如何选用晶体三极管与场效应管的技巧

    http://www.kiaic.com/article/detail/1308.html 场效应管种类场效应管 场效应晶体管(Field Effect Transistor缩写(FET))简称场效应 ...

  5. 19个JavaScript简化编码小技巧

    这篇文章适合任何一位基于JavaScript开发的开发者.我写这篇文章主要涉及JavaScript中一些简写的代码,帮助大家更好理解一些JavaScript的基础.希望这些代码能从不同的角度帮助你更好 ...

  6. gin使用validator库参数校验若干实用技巧

    validator库参数校验若干实用技巧 本文介绍了使用validator库做参数校验的一些十分实用的使用技巧,包括翻译校验错误提示信息.自定义提示信息的字段名称.自定义校验方法等. validato ...

  7. 探究javascript对象和数组的异同,及函数变量缓存技巧

    javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...

  8. 前端极易被误导的css选择器权重计算及css内联样式的妙用技巧

    记得大学时候,专业课的网页设计书籍里面讲过css选择器权重的计算:id是100,class是10,html标签是5等等,然后全部加起来的和进行比较... 我只想说:真是误人子弟,害人不浅! 最近,在前 ...

  9. 前端网络、JavaScript优化以及开发小技巧

    一.网络优化 YSlow有23条规则,中文可以参考这里.这几十条规则最主要是在做消除或减少不必要的网络延迟,将需要传输的数据压缩至最少. 1)合并压缩CSS.JavaScript.图片,静态资源CDN ...

随机推荐

  1. JAVA的文件操作【转】

    11.3 I/O类使用 由于在IO操作中,需要使用的数据源有很多,作为一个IO技术的初学者,从读写文件开始学习IO技术是一个比较好的选择.因为文件是一种常见的数据源,而且读写文件也是程序员进行IO编程 ...

  2. web3无法安装的额解决方案-----yarn命令安装web3

    凡是可以用 JavaScript 来写的应用,最终都会用 JavaScript 来写. --Atwood定律(Jeff Atwood在2007年提出) yarn命令详解 https://yarnpkg ...

  3. [ecmagnet][django] 如何使用django的signal

    """ 在web开发中, 你可能会遇到下面这种场景: 在用户完成某个操作后, 自动去执行一些后续的操作. 譬如用户完成修改密码后,你要发送一份确认邮件 观察者模式:观察者 ...

  4. c++单例模式代码分析

    单例模式就是一个C++语法精华浓缩的一个体现,有句老话:麻雀虽小五脏俱全!来形容单例非常贴切! 下面的代码分析了如果自己malloc并且memcpy一个单例指针会带来很大危害并如何防止这种情况发生. ...

  5. sping事务的理解

    阅读数:2020 一.事务的基本原理 Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的.对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤 ...

  6. 《学习OpenCV》课后习题解答8

    题目:(P126) 本章完整讲述了基本的输入/输出编程以及OpenCV的数据结构.下面的练习是基于前面的知识做一些应用,为后面大程序的实现提供帮助. a.创建一个程序实现以下功能:(1)从视频文件中读 ...

  7. systemtap get var of the tracepoing

    kernel.trace("sched_switch") func:func:perf_trace_sched_stat_template get the function in ...

  8. VS 附加进程调试

    1.在IIS 上新建一个项目,制定目录到 项目根目录. 2.制定IIS上指定 主机名称如: vk.com 3. 修改主机HOST 文件:C:\Windows\System32\drivers\etc ...

  9. JAVA调用Oracle存储过程和函数

    连接数据库的工具类: import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; imp ...

  10. 【bzoj2326】[HNOI2011]数学作业 矩阵乘法

    题目描述 题解 矩阵乘法 考虑把相同位数的数放到一起处理: 设有$k$位的数为$[l,r]$,那么枚举从大到小的第$i$个数(即枚举$r-i+1$),考虑其对$Concatenate(l..r)$的贡 ...