package com.alibaba.tamper; import java.lang.reflect.Field; import java.lang.reflect.Method; import org.springframework.util.ReflectionUtils; /** * 提供常见的测试方法 * * @author jianghang 2011-1-30 上午11:15:54 */ public class TestUtils { /** * 获取对应属性的值 * * @param obj * @param fieldName * @return */ public static Object getField(Object obj, String fieldName) { Field field = ReflectionUtils.findField(obj.getClass(), fieldName); ReflectionUtils.makeAccessible(field); return ReflectionUtils.getField(field, obj); } /** * 设置对应参数的值 * * @param target * @param methodName * @param args * @return * @throws Exception */ public static void setField(Object target, String fieldName, Object args) throws Exception { // 查找对应的方法 Field field = ReflectionUtils.findField(target.getClass(), fieldName); ReflectionUtils.makeAccessible(field); ReflectionUtils.setField(field, target, args); } /** * 调用方法,可以是一些私有方法 * * @param target * @param methodName * @param args * @return * @throws Exception */ public static Object invokeMethod(Object target, String methodName, Object... args) throws Exception { Method method = null; // 查找对应的方法 if (args == null || args.length == 0) { method = ReflectionUtils.findMethod(target.getClass(), methodName); } else { Class[] argsClass = new Class[args.length]; for (int i = 0; i < args.length; i++) { argsClass[i] = args[i].getClass(); } method = ReflectionUtils.findMethod(target.getClass(), methodName, argsClass); } ReflectionUtils.makeAccessible(method); if (args == null || args.length == 0) { return ReflectionUtils.invokeMethod(method, target); } else { return ReflectionUtils.invokeMethod(method, target, args); } } }