如何测试私有成员方法和变量
先考虑它是否可以单独到一个类,再考虑使用反射
class Stranger {
public Stranger(final String name) {
this.name = name;
}
private final String greet(final String hello) {
return hello + name;
}
private String name = "";
}
public class PrivateTest {
public static void main(String args[]) throws Exception {
Stranger testObj = new Stranger("Walter");
Class testClass = testObj.getClass();
// get private property
Field field = testClass.getDeclaredField("name");
// Make the field accessible
field.setAccessible(true);
// get private method
Class[] typeParams = new Class[] { String.class };
Method method = testClass.getDeclaredMethod("greet", typeParams);
// Make the method accessible
method.setAccessible(true);
// execute the method
Object objParams[] = { "hello, " };
String greet = (String)method.invoke(testObj, objParams);
System.out.println(greet);
}
}