如何测试具有私有方法、字段或内部类的类?
2022-08-31 01:24:37
如何使用 JUnit 测试具有内部私有方法、字段或嵌套类的类?
仅仅为了能够运行测试而更改方法的访问修饰符似乎很糟糕。
如何使用 JUnit 测试具有内部私有方法、字段或嵌套类的类?
仅仅为了能够运行测试而更改方法的访问修饰符似乎很糟糕。
如果您具有某种遗留的 Java 应用程序,并且不允许更改方法的可见性,则测试私有方法的最佳方法是使用反射。
在内部,我们使用帮助器来获取/设置和变量以及调用和方法。以下模式将允许您执行与私有方法和字段相关的几乎所有操作。当然,你不能通过反射来改变变量。private
private static
private
private static
private static final
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);
笔记:
TargetClass.getDeclaredMethod(methodName, argClasses)
让您研究方法。同样的事情也适用于 .private
getDeclaredField
- 需要与私人一起玩。
setAccessible(true)
测试私有方法的最佳方法是通过另一个公共方法。如果无法执行此操作,则满足下列条件之一为真: