package runner; import javassist.CtClass; import net.csdn.ServiceFramwork; import net.csdn.common.settings.Settings; import org.junit.runners.Suite; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; /** * User: WilliamZhu * Date: 12-7-27 * Time: 下午3:29 */ public class DynamicSuite extends Suite { static { try { initEnv(); } catch (Exception e) { e.printStackTrace(); } } public DynamicSuite(Class<?> setupClass) throws Exception { super(setupClass, findTestClass()); } public static void initEnv() throws Exception { ServiceFramwork.mode = ServiceFramwork.Mode.test; CtClass ctClass = ServiceFramwork.classPool.get("net.csdn.bootstrap.Bootstrap"); //加载Guice容器 Method method = ctClass.toClass().getDeclaredMethod("configureSystem"); method.setAccessible(true); method.invoke(null); } public static Class[] findTestClass() throws Exception { Settings settings = ServiceFramwork.injector.getInstance(Settings.class); List<Class> classList = new ArrayList<Class>(); List<String> classStrs = ServiceFramwork.scanService.classNames(settings.get("application.test"), DynamicSuite.class); for (String abc : classStrs) { classList.add(Class.forName(abc)); } Class[] classes = new Class[classList.size()]; classList.toArray(classes); return classes; } }