UT技巧
(一)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技巧的更多相关文章
- 使用powershell提权的一些技巧
原文:http://fuzzysecurity.com/tutorials/16.html 翻译:http://www.myexception.cn/windows/1752546.html http ...
- JavaScript 开发人员需要知道的简写技巧
本文来源于多年的 JavaScript 编码技术经验,适合所有正在使用 JavaScript 编程的开发人员阅读. 本文的目的在于帮助大家更加熟练的运用 JavaScript 语言来进行开发工作. 文 ...
- 19 个 JavaScript 编码小技巧
这篇文章适合任何一位基于JavaScript开发的开发者.我写这篇文章主要涉及JavaScript中一些简写的代码,帮助大家更好理解一些JavaScript的基础.希望这些代码能从不同的角度帮助你更好 ...
- 场效应管种类-场效应管N、P沟道与增强、耗尽型工作原理等知识详解 如何选用晶体三极管与场效应管的技巧
http://www.kiaic.com/article/detail/1308.html 场效应管种类场效应管 场效应晶体管(Field Effect Transistor缩写(FET))简称场效应 ...
- 19个JavaScript简化编码小技巧
这篇文章适合任何一位基于JavaScript开发的开发者.我写这篇文章主要涉及JavaScript中一些简写的代码,帮助大家更好理解一些JavaScript的基础.希望这些代码能从不同的角度帮助你更好 ...
- gin使用validator库参数校验若干实用技巧
validator库参数校验若干实用技巧 本文介绍了使用validator库做参数校验的一些十分实用的使用技巧,包括翻译校验错误提示信息.自定义提示信息的字段名称.自定义校验方法等. validato ...
- 探究javascript对象和数组的异同,及函数变量缓存技巧
javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...
- 前端极易被误导的css选择器权重计算及css内联样式的妙用技巧
记得大学时候,专业课的网页设计书籍里面讲过css选择器权重的计算:id是100,class是10,html标签是5等等,然后全部加起来的和进行比较... 我只想说:真是误人子弟,害人不浅! 最近,在前 ...
- 前端网络、JavaScript优化以及开发小技巧
一.网络优化 YSlow有23条规则,中文可以参考这里.这几十条规则最主要是在做消除或减少不必要的网络延迟,将需要传输的数据压缩至最少. 1)合并压缩CSS.JavaScript.图片,静态资源CDN ...
随机推荐
- 时间动态协同过滤(TimeSVD++)
原作者 原论文地址 http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.379.1951&rep=rep1&type=pd ...
- windows下连接hadoop运行eclipse报错Permission denied:
这是权限问题,试了一下同时也不能在hdfs创建文件夹. 解决: 修改如下hadoop的配置文件:etc/hadoop/hdfs-site.xml,如没有的话可以添加上. <property> ...
- MySQL初识3
随着对MySQL的熟识,今次总结一下MySQL数据库的删除.备份和还原操作 1.数据库的删除: a.删除数据库的命令:drop database dbname; b.删除数据库中的表: 单个表:dro ...
- Spring MVC前台POST/GET方式传参数的方法
假设前台通过submit传值,代码如下: <form action="testPost.do" method="post"> 页码:<inpu ...
- STL中list的erase()方法
http://www.cnblogs.com/gshlsh17/ rase()方法是删除iterator指定的节点 但是要注意的是在执行完此函数的时候iterator也被销毁了 这样的话关于it ...
- Mybatis学习系列(七)缓存机制
Mybatis缓存介绍 MyBatis提供一级缓存和二级缓存机制. 一级缓存是Sqlsession级别的缓存,Sqlsession类的实例对象中有一个hashmap用于缓存数据.不同的Sqlsessi ...
- C#中的String.Format方法
定义String.Format是将指定的String类型的数据中的每个格式项替换为相应对象的值的文本等效项.(1)string p1="xiaomeng";string p2=&q ...
- 【题解】洛谷P2418 yyy loves OI IV
感觉很是妙啊……这题数次误入歧途...最开始想的二维dp,单调队列优化:无果,卒.于是没忍住看了下标签:暴力枚举?搜索?于是开始想记忆化搜索.以为会有什么很强的剪枝之类的:30分,卒.最后终于回到正道 ...
- 12.25模拟赛T1
可以区间dp,但是复杂度太高. 所以应该是贪心,怎么贪心呢? 这种题目,最好还是手玩找一些规律. 可以发现,由于保证可以m次填完,所以颜色之间没有相互包含关系. 比较像分治的模型. 所以考虑拿到一个区 ...
- MySQL 数据库性能优化之缓存参数优化
在平时被问及最多的问题就是关于 MySQL 数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级 MySQL DBA 以及其他对 MySQL 性能优化感兴趣 ...