package org.fanhongtao.utils; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import junit.framework.Assert; /** * JUnit测试时的辅助类 * @author Dharma * @created 2010-3-11 */ public class JUnitHelper { public static void equal(Object obj1, Object obj2) { Class<?> c1 = obj1.getClass(); Class<?> c2 = obj2.getClass(); Assert.assertEquals("Not the same class", c1.getName(), c2.getName()); Method[] methods = c1.getMethods(); for (Method m : methods) { String name = m.getName(); if ((!name.startsWith("get")) || (m.getParameterTypes().length != 0)) { continue; } try { Object v1 = m.invoke(obj1); Object v2 = m.invoke(obj2); Assert.assertEquals("Value not same for method: " + getMethodString(m), v1, v2); } catch (Exception e) { Assert.fail("Failed to call method: " + getMethodString(m) + ", reason: " + e.getMessage()); } } } public static String getMethodString(Method method) { Class<?> returnType = method.getReturnType(); String name = method.getName(); StringBuilder sb = new StringBuilder(); sb.append(Modifier.toString(method.getModifiers())).append(' '); sb.append(returnType.getName()).append(' '); sb.append(name).append('('); Class<?>[] paramTypes = method.getParameterTypes(); for (int i = 0; i < paramTypes.length; i++) { if (i > 0) { sb.append(", "); } sb.append(paramTypes[i].getName()); } sb.append(')'); return sb.toString(); } }