模拟Junit测试的@Test


1 案例说明

  • 模拟Junit测试的@Test

2 案例分析

  1. 模拟Junit测试的注释@Test,首先需要编写自定义注解@MyTest,并添加元注解,保证自定义注解只能修饰方法,且在运行时可以获得。
  2. 然后编写目标类(测试类),然后给目标方法(测试方法)使用 @MyTest注解,编写三个方法,其中两个加上@MyTest注解。
  3. 最后编写调用类,使用main方法调用目标类,模拟Junit的运行,只要有@MyTest注释的方法都会运行。

3 案例代码

自定义的MyTest注解:

package com.homework_test.test03;


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 {
}

在Test实体类上使用注解:

package com.homework_test.test03;

public class Test {

    @MyTest
    public void show01() {
        System.out.println("show01()方法!!!");
    }

//    @MyTest
    public void show02() {
        System.out.println("show02()方法!!!");
    }


    @MyTest
    public void show03() {
        System.out.println("show03()方法!!!");
    }
}

测试:

package com.homework_test.test03;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class AnnotationTest {
    public static void main(String[] args) throws IllegalAccessException, InstantiationException, InvocationTargetException {
        //获得Test实体类class对象
        Class<Test> testClass = Test.class;
        //获取该实体对象(执行方法使用)
        Test test = testClass.newInstance();

        //获取所有成员方法
        Method[] methods = testClass.getMethods();

        //遍历方法集合对象并判断
        for (Method method : methods) {
            //判断method方法是否含有MyTest注解
            if(method.isAnnotationPresent(MyTest.class)){
                //含有,直接执行方法
                method.invoke(test);
            }

        }
    }
}
/*
打印结果:
show01()方法!!!
show03()方法!!!
*/


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM