package org.simpleframework.xml; import java.lang.reflect.Method; import junit.framework.TestCase; public class TestScanner { public void execute(TestCase test) throws Exception { Class type = test.getClass(); Method[] methods = type.getDeclaredMethods(); boolean setUpExists = true; boolean tearDownExists = true; for(Method method : methods) { Class[] types = method.getParameterTypes(); if(types.length == 0) { String name = method.getName(); if(name.startsWith("test")) { if(setUpExists) { try { Method setUp = type.getDeclaredMethod("setUp"); setUp.setAccessible(true); setUp.invoke(test); } catch(Exception e) { setUpExists = false; } } if(tearDownExists) { try { Method tearDown = type.getDeclaredMethod("tearDown"); tearDown.setAccessible(true); tearDown.invoke(test); }catch(Throwable e) { tearDownExists = false; } } method.setAccessible(true); method.invoke(test); System.gc(); Thread.sleep(10); } } } } }