如何使用 JUnit 测试具有内部私有方法、字段或嵌套类的类?
为了能够运行测试而更改方法的访问修饰符似乎很糟糕。
如果你有一些遗产Java应用程序,并且您不允许更改方法的可见性,测试私有方法的最佳方法是使用反射 http://en.wikipedia.org/wiki/Reflection_%28computer_programming%29.
在内部我们使用助手来获取/设置private
and private static
变量以及调用private
and 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);
Notes:
-
TargetClass.getDeclaredMethod(methodName, argClasses)
让你看看private
方法。同样的事情也适用于getDeclaredField
.
- The
setAccessible(true)
需要和私人一起玩。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)