import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD}) public @interface MyJUnit { }
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Scanner; public class RunJUnit { public static void main(String[] args) { System.out.println("请输出你需要测试的类: "); Scanner scanner = new Scanner(System.in); String path = scanner.nextLine(); try { Class<?>clazz = Class.forName(path); Object obj = clazz.newInstance(); Method[]methods = clazz.getDeclaredMethods(); for (Method method : methods) { if(null != method.getAnnotation(MyJUnit.class)) { method.invoke(obj); } } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } scanner.close(); } }
public class TestMyJUnit { @MyJUnit public void test1() { System.out.println("111111111111"); } public void test2() { System.out.println("22222222222222"); } @MyJUnit public void test3() { System.out.println("3333333333333"); } }