测试私有(private)的方法有两种:

1)把目标类的私有方法(修饰符:private)修改为(public),不推荐,因为修改了源程序不佳

2)通过反射 (推荐

代码演示:

目标程序

PrivateMethod.java

[java] view plain copy
  1. package com.junit3_8;
  2. public class PrivateMethod {
  3. //私有方法
  4. private int add(int a, int b)
  5. {
  6. return a +b ;
  7. }
  8. }

测试程序

PrivateMethodTest.java

[java] view plain copy
  1. package com.junit3_8;
  2. import java.lang.reflect.Method;
  3. import junit.framework.Assert;
  4. import junit.framework.TestCase;
  5. /**
  6. * 通过反射测试私有方法,
  7. *
  8. */
  9. public class PrivateMethodTest extends TestCase {
  10. public void testAdd() throws Exception
  11. {
  12. //PrivateMethod pm = new PrivateMethod();
  13. //获取目标类的class对象
  14. Class<PrivateMethod> class1 = PrivateMethod.class;
  15. //获取目标类的实例
  16. Object instance = class1.newInstance();
  17. //getDeclaredMethod()  可获取 公共、保护、默认(包)访问和私有方法,但不包括继承的方法。
  18. //getMethod() 只可获取公共的方法
  19. Method method = class1.getDeclaredMethod("add", new Class[]{int.class,int.class});
  20. //值为true时 反射的对象在使用时 应让一切已有的访问权限取消
  21. method.setAccessible(true);
  22. Object result = method.invoke(instance, new Object[]{1,2});
  23. Assert.assertEquals(3, result);
  24. }
  25. }

小结:

getDeclaredMethod()  可获取 公共、保护、默认(包)访问和私有方法,但不包括继承的方法。 getMethod() 只可获取公共的方法

Method method = class1.getDeclaredMethod("add", new Class[]{int.class,int.class});

等价于

Method method = class1.getDeclaredMethod("add", new Class[]{Integer.TYPE,int.Integer.TYPE});

因为 Integer.TYPE 表示基本类型 int 的 Class 实例

JUnit 3.8 通过反射测试私有方法相关推荐

  1. mockito+junit 单元测试 测试私有方法利用反射去调用提升覆盖率 反射调用时传入参数为 null

    今天公司安排我写单元测试 因为要通过三级认证 公司要求是覆盖率必须达到100% 而在写单元测试的时候 对于是否要测试私有方法一直是一个争议 公司规范 对私有方法也进行测试 代码如下: private ...

  2. powermockito测试私有方法_03 增强测试: 静态、私有方法处理

    mockito 已经很强大,能帮我们完成大部分 mock 工作,但是对于一些特殊方法来说,还是无能为力. 例如,当我们使用系统获取当前时间戳的时候,可能会调用 System.currentTimeMi ...

  3. 测试框架 如何测试私有方法_高效的企业测试–测试框架(5/6)

    测试框架 如何测试私有方法 本系列文章的这一部分将介绍测试框架以及我在何时以及是否应用它们方面的想法和经验. 关于测试框架的想法 我对大多数测试框架不太满意的原因是,按照我的观点,它们大多增加了语法上 ...

  4. java 反射 调用私有构造函数_使用反射调用私有方法

    1.创建一个被调用的类 /** * @version 1.0 * @Author F-llin * @Date 2020-12-04 13:53 */ public class Bean{ priva ...

  5. python方法测试怀孕_在Python中测试私有方法(例外)

    在阅读了关于在Python中测试私有方法的内容之后,特别是在How do I unit test the methods in a method object?处引用了接受的答案,看来最好只测试公共接 ...

  6. junit 测试似有方法_JUnit测试私有方法(protected方法类同)

    注意到,我们在之前被测试的方法都是共有的...其实就算是protected修饰的方法我们也可以通过在同一个包下面建测试类来测试的.但是,现 在我们有一个需求,就是要测试私有的方法....按照我们之前的 ...

  7. JUnit测试私有方法(protected方法类同)

    注意到,我们在之前被测试的方法都是共有的...其实就算是protected修饰的方法我们也可以通过在同一个包下面建测试类来测试的.但是,现 在我们有一个需求,就是要测试私有的方法....按照我们之前的 ...

  8. 测试私有方法_史上最轻量!阿里开源了新型单元测试Mock工具

    点击上方蓝色字体,选择"设为星标" 回复"666"获取面试宝典 TestableMock是基于源码和字节码增强的Java单元测试辅助工具,包含以下功能: 访问被 ...

  9. php 反射 调用私有方法,PHP通过反射方法调用执行类中的私有方法

    PHP 5 具有完整的反射 API,添加了对类.接口.函数.方法和扩展进行反向工程的能力. 下面我们演示一下如何通过反射,来调用执行一个类中的私有方法: //MyClass这个类中包含了一个名为myF ...

最新文章

  1. XAPIAN简单介绍(三)
  2. 【杂谈】菜鸟误入linux会有哪些惨痛的经历
  3. leetcode 718. Maximum Length of Repeated Subarray | 718. 最长重复子数组(动态规划)
  4. 用CSS控制Table和div因撑开而变形
  5. 动态分配方式计算学生成绩
  6. 设置防火墙规则,防止因为TCP第三次握手,系统自动返回包
  7. Amoeba-mysql开源项目高可用读写分离
  8. [转载] python查看的统计量_python 描述性统计_Python中的基本统计:描述性统计
  9. 医号馆诊所管理软件系统更新,新增人脸识别、处置单等功能!
  10. 工业级4g无线路由器_工业级4g无线路由器厂家品牌
  11. springboot starter封装永中预览
  12. django的ORM常用字段和参数
  13. Apollo6.0 + lgSVL 联合仿真平台搭建
  14. win7系统计算机无最小化,win7我的电脑图标没了win7我的电脑不见解决方法(图)
  15. Wifi密码破解实战
  16. 仪征市职称计算机,《关于重申专业技术人员职称评定、职务聘任必须坚持外语、计算机条件的通知》……...
  17. 说话人识别matlab实现
  18. 大华摄像头录像视频,可以使用PotPlayer剪切
  19. H3C基础配置学习笔记1-端口配置
  20. Out of range value for column 'phon' at row 1

热门文章

  1. lanmp/lamp/lnmp/lnamp一键安装
  2. VirtualBox快照(Snapshot)功能使用及注意事项
  3. Bootstrap3.0学习第九轮(CSS补充)
  4. play2.0文档-面向java开发者(7)异步HTTP编程
  5. python常见的数据类型_Python常见数据类型及操作
  6. lisp直线连接圆象限电_用小学数学知识解释,为什么井盖是圆的?
  7. profiling mysql_MySQL如何利用profiling分析SQL查询语句
  8. Ubuntu环境下TensorFlow 的环境搭建(二)安装TensorFlow(CPU版)
  9. 论机智,还是国产安卓旗舰花样多,从2999到10999元,各有各的“开窍点”
  10. 上汽接入Momenta飞轮,成为中国第一个落地RoboTaxi的车企