广告
返回顶部
首页 > 资讯 > 精选 >如何使用Java注解和反射实现Junit4中的用例调用
  • 722
分享到

如何使用Java注解和反射实现Junit4中的用例调用

2023-06-15 14:06:27 722人浏览 泡泡鱼
摘要

这篇文章主要讲解了“如何使用Java注解和反射实现Junit4中的用例调用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Java注解和反射实现Junit4中的用例调用”吧!实例需求需

这篇文章主要讲解了“如何使用Java注解和反射实现Junit4中的用例调用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Java注解和反射实现Junit4中的用例调用”吧!

实例需求

需求:模拟Junit4中的用例结构,自定义一个标签作为测试用例的标识。

在Junit4中注解@Test表示测试用例,每一个测试用例的本质就是测试类中的一个方法,即:

@Test public void test() { fail("Not yet implemented"); }

具体要求:

测试类是默认构造方法

通过标签MyTag作为方法是否为用例的标识

作为用例的方法必须是无参的

写一个方法runCase(String pkgName),使其能够完成对指定类中测试用例的调用工作

注解设计

首先需要定义一个注解MyTag,代码如下:

import java.lang.annotation.Retention; import java.lang.annotation.Target; import java.lang.annotation.ElementType; import java.lang.annotation.RetentionPolicy; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface MyTag{ String name(); }

 测试用例设计

模拟junit4框架,写一个测试类,其中login、info、loGout是无参方法,而test是有参方法

public class TestTag{ @MyTag(name="case1") public void login(){ System.out.println("login"); } @MyTag(name="case2") public void info(){ System.out.println("info");  } @MyTag(name="case3") public void logout(){ System.out.println("logout"); } @MyTag(name="case4") public void test(String p){ System.out.println("logout");  } }

 运行类的设计思路

因为测试类是默认构造方法,所以使用如下api,完成类实例化

Class<?> clazz = Class.forName(pkgName) Object obj = clazz.newInstance();

因为测试类中有很多方法,我们需要获取所有的方法并按照规则进行过滤,代码如下:

Method[] methods = clazz.getMethods(); for (Method method : methods) { //过滤规则  }

判断方法的标签是否为MyTag,代码如下:

If(method.getAnnotation(MyTag.class) != null)

判断方法是否没有参数,代码如下:

If(method.getParameterCount()==0)

运行方法,代码如下:

method.invoke(obj)

完整代码

public static void runCase(String pkgName) throws IllegalAccessException,IllegalArgumentException, InvocationTargetException, InstantiationException,ClassNotFoundException {  Class<?> clazz = Class.forName(pkgName);  Object obj = clazz.newInstance();  Method[] methods = clazz.getMethods(); for (Method method : methods) {        if(method.getAnnotation(MyTag.class) != null&& method.getParameterCount()==0) {                                 method.invoke(obj); //调用方法                System.out.println("测试用例名称是:"+method.getName()); } } }

运行代码,输出如下:

logout

测试用例名称是:logout

login

测试用例名称是:login

info

测试用例名称是:info

这个就是一个模拟Junit4执行用例的demo,当我们随意添加TestTag  中的测试用例时,执行runCase方法,都能够成功执行测试用例。相信通过这个例子大家一定会注解,和反射的概念有了更为深刻的理解!我们的实例目前只支持对于指定某一个类中的测试方法进行调用,大家可以考虑如何实现对于某一个包下所有类的测试用例都可以进行调用呢?

感谢各位的阅读,以上就是“如何使用Java注解和反射实现Junit4中的用例调用”的内容了,经过本文的学习后,相信大家对如何使用Java注解和反射实现Junit4中的用例调用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 如何使用Java注解和反射实现Junit4中的用例调用

本文链接: https://www.lsjlt.com/news/280502.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用Java注解和反射实现Junit4中的用例调用
    这篇文章主要讲解了“如何使用Java注解和反射实现Junit4中的用例调用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Java注解和反射实现Junit4中的用例调用”吧!实例需求需...
    99+
    2023-06-15
  • 如何用Java注解和反射实现依赖注入
    目录概述定义注解为被注入的方法添加注解通过反射处理注解概述 在Spring中,我们可以通过 @Autowired注解的方式为一个方法中注入参数,那么这种方法背后到底发生了什么呢,这篇...
    99+
    2022-11-12
  • Java中的注解和反射怎么使用
    这篇文章主要讲解了“Java中的注解和反射怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中的注解和反射怎么使用”吧!1、注解(Annotation)1.1 什么是注解(Ann...
    99+
    2023-07-02
  • 如何在Java项目中使用注解和反射
    今天就跟大家聊聊有关如何在Java项目中使用注解和反射,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开...
    99+
    2023-06-06
  • java中反射和注解的简单使用方法
    目录什么反射?Java反射机制提供的功能反射相关的主要APIClass 类获取Class 类的实例( 四种方法)哪些类型可以有Class 对象?演示Class类的常用方法有了Clas...
    99+
    2022-11-12
  • Java利用自定义注解、反射实现简单BaseDao实例
    在常见的ORM框架中,大都提供了使用注解方式来实现entity与数据库的映射,这里简单地使用自定义注解与反射来生成可执行的sql语句。这是整体的目录结构,本来是为复习注解建立的项目^.^好的,首先我们来确定思路。1. 自定义@Table @...
    99+
    2023-05-31
    java 自定义注解 反射
  • 如何在java中使用反射调用方法
    这篇文章将为大家详细讲解有关如何在java中使用反射调用方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Java有哪些集合类Java中的集合主要分为四类:1、List列表:有序的,可重复的...
    99+
    2023-06-14
  • 浅谈java反射和自定义注解的综合应用实例
    前言前几天学习了反射和自定义注解,刚好工作中遇到一个小问题:前台传递到后台的必填字段为空,导致不能插入数据库。就是这样一个小问题,让我考虑到是否可以做一个通用的方法,让前台传递过来的必填字段在后台也校验一遍,如果传递为空,则把响应字段返回提...
    99+
    2023-05-31
    java 自定义注解 反射
  • Java 中反射的概念、作用和特点,在什么情况下使用反射及使用实例
    反射的概念 反射(Reflection)是 Java 的一种特性,它可以让程序在运行时获取自身的信息,并且动态地操作类或对象的属性、方法和构造器等。通过反射功能,可以让我们在不知道具体类名的情况下,依...
    99+
    2023-10-22
    java
  • 怎么在java中利用反射实现获取和调用功能
    怎么在java中利用反射实现获取和调用功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Class类中获取方法:public Method[] getMetho...
    99+
    2023-05-30
    java
  • Java使用反射和动态代理实现一个View注解绑定库
    目录支持的功能代码注解类实现类使用使用反射结合动态代理实现一个View注解绑定库,支持View和事件绑定,代码简洁,使用简单,扩展性强。 支持的功能 @ContentView 绑定l...
    99+
    2022-11-13
  • JAVA基础之注解与反射的使用方法和场景
    目录注解注解定义使用场景内置注解 元注解反射加载配置文件反射获取Class反射获取 Constructor反射获取 Method反射获取 Field通过反射获取注解信息内省...
    99+
    2022-11-11
  • Java怎么使用反射和动态代理实现一个View注解绑定库
    本篇内容介绍了“Java怎么使用反射和动态代理实现一个View注解绑定库”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!使用反射结合动态代理实...
    99+
    2023-06-30
  • 如何在Java中利用反射机制查找指定的注解
    如何在Java中利用反射机制查找指定的注解?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。定义注解Controller.java@Target({ElementType.TYPE...
    99+
    2023-05-31
    java ava
  • Java中使用反射机制如何实现一个Aop代理
    今天就跟大家聊聊有关Java中使用反射机制如何实现一个Aop代理,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。利用反射生成JDK的动态代理,也就是AOP中的AOP代理,代替目标对象,...
    99+
    2023-05-31
    java aop 反射
  • SpringBoot如何实现使用反射模拟IOC和getBean
    这篇文章主要介绍“SpringBoot如何实现使用反射模拟IOC和getBean”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot如何实现使用反射模拟IOC和getBean”文章能帮...
    99+
    2023-07-05
  • Mybatis如何使用@Mapper和@MapperScan注解实现映射关系
    目录使用@Mapper和@MapperScan注解实现映射关系Mybatis-@MapperScan和mybatis:scan分析<mybatis:scan>Mapper...
    99+
    2022-11-12
  • java利用反射机制如何实现获取对象的值
    本篇文章给大家分享的是有关java利用反射机制如何实现获取对象的值,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。通过反射机制得到对象中的属性和属性值 在对象中private没问...
    99+
    2023-05-31
    java 反射 对象
  • springboot如何使用AOP+反射实现Excel数据的读取
    这篇文章将为大家详细讲解有关springboot如何使用AOP+反射实现Excel数据的读取,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。如果我们遇到把excel表格中的数据导入到数据库,首...
    99+
    2023-06-29
  • Java中使用同步回调和异步回调的示例详解
    目录(一)同步回调(1)匿名内部类回调(2)Lambda 回调(二)异步回调(1)简单的线程回调(2)异步并行回调(3)CompletableFuture 回调小结完整代码(一)同步...
    99+
    2023-05-16
    java同步回调 java异步回调 java异步和同步回调
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作