如何测试私有成员方法和变量
2010-12-15 00:28
267 查看
先考虑它是否可以单独到一个类,再考虑使用反射
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);
}
}
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);
}
}
相关文章推荐
- 通过反射,如何操作私有成员变量(取/赋值),如何调用私有方法?
- py 类,类成员(变量、方法)、继承、关键方法、with、callback、exec、eval、字符转型等,测试
- 如何使用java反射机制测试私有方法
- 如何在VS中测试一个抽象类中的私有方法
- 反射机制的概述和字节码对象的获取,通过反射获取构造方法并使用;通过反射获取成员变量并使用;通过反射获取私有成员变量并使用;通过反射获取成员方法并使用
- 访问C++类对象中私有成员变量的方法
- 访问C++类对象中私有成员变量的方法
- javaScript【创建对象、创建类、成员变量、方法、公有和私有、静态】
- 如何测试私有 Private/Internal 方法
- 【未解决】cobertura如何跳过私有构造器和无用的getter,setter方法的测试覆盖率统计
- JavaSE第六十四讲:使用反射机制调用对象的私有方法、访问对象的私有成员变量
- iOS开发笔记之七十——如何访问对象的私有方法和变量
- junit 测试私有方法或私有变量
- 在单元测试中如何测试私有方法
- ruby中如何调用与局部变量同名的私有方法
- java学习之测试Java类的非公有成员变量和方法
- OC 局部变量 成员变量 属性及方法 OC成员变量的私有性
- 不用友元,访问类的私有成员变量的方法
- 不用友元,访问类的私有成员变量的方法
- 子类用反射可以访问父类中的私有成员变量及方法