单测覆盖率要求比较高,但是这个方法的单测是真写不出来,很懵啊
public static String getFieldValueByFieldName(String fieldName, Object object) {
try {
Field field = object.getClass().getDeclaredField(fieldName);
//设置对象的访问权限,保证对private的属性的访问
field.setAccessible(true);
Object hisValue = field.get(object);
if (null == hisValue) {
return "";
}
String value = "";
String type = field.getType().toString();
if (type.contains("Date")) {
value = DateFormatUtils.format((Date) hisValue, "yyyy-MM-dd HH:mm:ss");
} else {
value = hisValue.toString();
}
return value;
} catch (Exception e) {
return "";
}
}
Test
public void testGetFieldValueByFieldName() {
String fieldName="111";
Object object = new Object();
LogAspect.getFieldTypeByFieldName(fieldName,object);
}
黔驴技穷了,只会形式般地MockITO一下,里面反射,查了基本都是说用反射覆盖私有方法的
基本能覆盖该方法
那我问你,Object对象里面有test方法吗??人家写个Object的意思是,你自己传一个自己的类,别用Object。
既然Object没有test方法,
Field field = object.getClass().getDeclaredField(fieldName);
上面的这句根本就拿不到成员变量,
String type = field.getType().toString(); 这句就是null if语句怎么进去?
你单测覆盖业务代码的时候,就能覆盖到这些吧?不用单独覆盖吧