发布日期:2018-03-26
UT问题,如何测试具有私有方法、字段或内部类的类?+ 查看更多
UT问题,如何测试具有私有方法、字段或内部类的类?
+ 查看更多
发布日期:2018-03-10 14:22
分类:JAVA
浏览次数:1201
我如何使用JUnit测试具有私有方法、字段或内部类的类?为能够运行测试的方法更改访问修饰符似乎不好。
回答
如果您有一些遗留应用程序,并且不允许更改方法的可见性,那么测试私有方法的最好方法是使用反射。在内部,我们使用助手来获取/设置私有和私有静态变量,以及调用私有和私有静态方法。下面的模式会让你做很多与私有方法和字段相关的事情。当然,您不能通过反射来改变私有静态最终变量。
Method method = targetClass.getDeclaredMethod(methodName, argClasses); method.setAccessible(true); return method.invoke(targetObject, argObjects);
对于字段:
ield field = targetClass.getDeclaredField(fieldName); field.setAccessible(true); field.set(object, value);
注释:
1. targetClass.getDeclaredMethod(methodName, argClasses) 让你访问私人方法,同样适用于getdeclaredfield。
2.(访问)私有的需要设置为可访问的
2.(访问)私有的需要设置为可访问的