首页 > 其他 > 详细

模拟Junit测试的@Test

时间:2020-06-18 09:58:07      阅读:62      评论:0      收藏:0      [点我收藏+]

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()方法!!!
*/

模拟Junit测试的@Test

原文:https://www.cnblogs.com/liqiliang1437/p/13155695.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!