(一)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. python3学习之路_day1

    登录程序1.输入用户名密码2.认证成功后显示欢迎信息3.输错三次后锁定 #!/usr/bin/env python #_*_coding:utf-8_*_ #by anthor gushiren 20 ...

  2. Linux通配符与特殊符号知识大全汇总

    符号 作用 Linux通配符 * 匹配任意(0个或多个)字符或字符串,包括空字符串 ? 匹配任意1个字符,有且只有一个字符 [abcd] 匹配abcd中任何一个字符,abcd也可是其他任意不连续字符 ...

  3. 爬取图片过程遇到的ValueError: Missing scheme in request url: h 报错与解决方法

    一 .scrapy整体框架 1.1 scrapy框架图 1.2 scrapy框架各结构解析 item:保存抓取的内容 spider:定义抓取内容的规则,也是我们主要编辑的文件 pipelines:管道 ...

  4. POJ 2229 递推

    Farmer John commanded his cows to search for different sets of numbers that sum to a given number. T ...

  5. 测试理论- the conten of test plan

    1 testing objects 测试对象 2 testing scope 测试范围 3 testing the frame (?) 4 the environment 5 reason for t ...

  6. ACM做题随做随思

    程序停止运行:数组开太大: 输入一串单词,可以“string s; while(cin>>s){//代码块}”,因为cin>>s遇到空格会停止: map<key,valu ...

  7. 【转载】Linux升级NTPD服务器-编译安装ntp-4.2.8p12与配置

    [转载]Linux升级NTPD服务器-编译安装ntp-4.2.8p12与配置 1. 系统与软件版本 1.1 系统版本 rhel6.4(Red Hat Enterprise Linux Server r ...

  8. 推荐一个好的Redis GUI 客户端工具

    推荐一个好的Redis GUI 客户端工具 Redis Desktop Manager  

  9. 在Linux下调试Python代码的各种方法

    这是一个我用于调试或分析工具概述,不一定是完整全面,如果你知道更好的工具,请在评论处标记. 日志 是的,的确,不得不强调足够的日志记录对应用程序是多么的重要.您应该记录重要的东西,如果你的记录足够好的 ...

  10. JAVA多线程及补充

    进程 运行中的应用程序叫进程,每个进程运行时,都有自已的地址空间(内存空间)如IE浏览器在任务管器中可以看到操作系统都是支持多进程的 线程 线程是轻量级的进程,是进程中一个负责程序执行的控制单元线程没 ...