java - 如何测试 private 方法,变量或者内部类

当你需要测试一个遗留的应用程序,且不能更改方法的可见性时,那么,测试私有方法/属性的最好方式就是使用反射

实际测试时,可以通过一些反射辅助类,设置和获取私有(静态)的变量、调用私有(静态)方法。遵循下面的窍门,你可以很好地处理私有方法和变量的测试。

Method method = targetClass.getDeclaredMethod(methodName, argClasses);
method.setAccessible(true);
return method.invoke(targetObject, argObjects);

私有变量:

Field field = targetClass.getDeclaredField(fieldName);
field.setAccessible(true);
field.set(object, value);

note: 1. targetClass.getDeclaredMethod(methodName, argClasses)这个方法能让你获取到私有方法。getDeclaredField让你获取到私有变量 2. 在对私有变量(方法)进行处理前,需要先setAccessible(true)

stackoverflow原址:http://stackoverflow.com/questions/34571/how-to-test-a-class-that-has-private-methods-fields-or-inner-classes

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 IT工具网 java


相关文章:

为什么数学函数Math.round(0.49999999999999994) 返回 1

java - Maven安装文件无法解决依赖关系

java - 自定义授权取决于用户属性

java - MongoDB Java驱动程序中“响应时间过长”的含义是什么?

java - 如何在简单的Java应用程序中设置quartz.config文件?

什么是数据结构

为Eclipse自动代码格式化设置行的最大长度?

java - 如何产生一个随机的字母数字串作为 session 的唯一标识符

java - 如何判断我从网络接收的文本/从文件读取的文本是否使用给定的编码?