单元测试中涉及到了mock出了一个对象,需要实现注入,故编写方法实现:
public class Util {
/**
* 使用反射的方实现mock对象的注入
* @param object
* @param fieldName
* @param value
*/
public static void setFieldValueByFieldName(Object object, String fieldName, Object value) {
try {
// 获取obj类的字节文件对象
Class c = object.getClass();
// 获取该类的成员变量
Field f = c.getDeclaredField(fieldName);
// 取消语言访问检查
f.setAccessible(true);
// 给变量赋值
f.set(object, value);
} catch (Exception e) {
e.printStackTrace();
}
}
}
使用:
public class A{
private String str;
private int num;
}
public class B{
A a=new A();
Util.setFieldValueByFieldName(a,"str","hello");
Util.setFieldValueByFieldName(a,"num",12);
}