进阶day12-自定义简单的Junit框架

This commit is contained in:
2026-04-02 14:35:43 +08:00
parent 435a8d85c3
commit bd74563b27
3 changed files with 58 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
package com.inmind.annotation03;
public class JunitDemo10 {
public void method1(){
System.out.println("测试方法1执行了");
}
@MyTest
public void method2(){
System.out.println("测试方法2执行了");
}
@MyTest
public void method3(){
System.out.println("测试方法3执行了");
}
}

View File

@@ -0,0 +1,29 @@
package com.inmind.annotation03;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/*
junit测试框架简单实现
注解(自定义注解)+反射(识别注解+解析注解)
实现步骤:
1.自定义注解 @MyTest
2.反射获取所有的带有该注解的方法让他们执行
*/
public class JunitTest10 {
public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, InstantiationException {
//获取测试类的Class对象
Class<JunitDemo10> clazz = JunitDemo10.class;
//获取JunitDemo10所有的方法
Method[] methods = clazz.getMethods();
System.out.println(methods.length);
//遍历判断每个方法对象上是否有@MyTest注解
for (Method method : methods) {
boolean flag = method.isAnnotationPresent(MyTest.class);
if (flag) {
method.invoke(clazz.getConstructor().newInstance());
}
}
}
}

View File

@@ -0,0 +1,11 @@
package com.inmind.annotation03;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyTest {
}