学习底层,能让我们更清楚的运用所调用的函数或对象

一个小小的例子 (注解与反射共同使用的案例 )

解释:

1)JUnit用的是@Test注解,我们用@MyTest注解。

2)JUnit已经嵌入到MyEclipse当中,我们自己的MyJUnit只要能独立运行就可以(不嵌入),同时这样我们也不方便在MyJUnit中以参数方式接收到被测试类的类名与方法名,只能以键盘输入的方式接收。

3)JUnit能实现指定单个方法来调用执行,由于不能利用MyEclipse传参,因此我们在MyJUnit程序中遍历所有的方法并通过判断是否声明@MyTest注解来决定是否调用执行该方法。

其中用到了之前自己写的loader(类加载器)

首先是注解,方法级别;

<span style="font-size:18px;"><span style="color:#ff0000;">@Retention(RetentionPolicy.RUNTIME)//这个是关键,必须要有,不然就是默认的(Class),VM会忽略的,后面的类加载器也解析不出来</span></span>
<span style="font-size:18px;">package cn.hncu.reflect.loader.MyJunit;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Retention(RetentionPolicy.RUNTIME)//这个是关键,必须要有,不然就是默认的,VM会忽略的
@Target(ElementType.METHOD)
public @interface MyAnnotation {}/** SOURCE
public static final RetentionPolicy SOURCE编译器要丢弃的注释。* CLASS
public static final RetentionPolicy CLASS编译器将把注释记录在类文件中,但在运行时 VM 不需要保留注释。这是默认的行为。* * * RUNTIME
public static final RetentionPolicy RUNTIME编译器将把注释记录在类文件中,在运行时 VM 将保留注释,因此可以反射性地读取。 */</span><span style="font-size:14px;">
</span>


<span style="font-size:18px;"><span style="white-space:pre">   </span>然后是使用自己创建的注解使用,简单的使用</span>
<span style="font-size:18px;">
</span>
<span style="font-size:18px;">
</span><pre name="code" class="java">/*** */
package cn.hncu.reflect.loader.MyJunit;/*** @author xinxin**/
public class Testipm {private int age;private String name;@MyAnnotationpublic int getAge() {System.out.println("22222222222");return age;}public void setAge(int age) {this.age = age;}@MyAnnotationpublic String getName() {System.out.println("1111111111");return name;}public void setName(String name) {this.name = name;}public Testipm(int age, String name) {super();this.age = age;this.name = name;}public Testipm() {super();}@Overridepublic String toString() {return "Testipm [age=" + age + ", name=" + name + "]";}}
<span style="font-size:18px;"><span style="white-space:pre">   </span></span>
<span style="white-space:pre">      </span><span style="font-size:18px;">就是 判断Class对象里面的方法是不是采用这个自己写的注解,然后作出相应的反应</span>
<span style="font-size:18px;"><span style="white-space:pre">       </span></span><pre name="code" class="java">/*** */
package cn.hncu.reflect.loader.MyJunit;import java.lang.reflect.Method;
import java.util.Scanner;import cn.hncu.reflect.loader.MyLoader.Loader;/*** @author xinxin**/
public class Test {public static void main(String[] args) {Scanner sc =new Scanner(System.in);System.out.println("请输入完整类名:");String name =sc.nextLine();Loader lo =new Loader();//调用自己写的类加载器,Class c=lo.findclass(name);Object obj=null;try {obj=c.newInstance();Method method[]=c.getDeclaredMethods();for(Method mm:method){boolean flg=mm.isAnnotationPresent(MyAnnotation.class);
//              System.out.println(flg);if(flg){System.out.println(c.getClassLoader());System.out.println(mm+"-----"+mm.getName());mm.invoke(obj,null );/*运行结果* cn.hncu.reflect.loader.MyLoader.Loader@2e71edc0
public java.lang.String cn.hncu.reflect.loader.MyJunit.Testipm.getName()-----getName
1111111111
cn.hncu.reflect.loader.MyLoader.Loader@2e71edc0
public int cn.hncu.reflect.loader.MyJunit.Testipm.getAge()-----getAge
22222222222*/}}} catch (Exception e) {e.printStackTrace();}//       boolean flg=c.isAnnotationPresent(MyAnnotation.class);
//      System.out.println(flg);//false,因为注解是方法级别,所以对象级别的肯定是false;}}

Java之工具-------Junit自己的测试工具MyJUnit相关推荐

  1. MATLAB/ SIMULINK模型在环MIL测试工具,自动化模型测试工具,自动生成测试报告

    MATLAB/ SIMULINK模型在环MIL测试工具,自动化模型测试工具,自动生成测试报告. 软件纯自己编写,经过长时间测试,包教会. 使用简单,可以参考如下截图. ID:9720006772002 ...

  2. java 测试工具 oracle_几种测试工具的简单介绍

    负载测试(Load Test):负载测试是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担. 二.WinRunner WinRunner 是一种企业级的功能测试工具,用于检验企业应用程序是否能 ...

  3. 基于Java实现的Web服务器与测试工具开发

    资源下载地址:https://download.csdn.net/download/sheziqiong/85706486 资源下载地址:https://download.csdn.net/downl ...

  4. java写渗透工具_常用渗透测试工具使用tips

    (7)sqlmap(python脚本学习下) 经典sql注入工具 (这种针对参数的工具,不知道是不是扫描方式有问题,还是怎么着,怎么才能抓几个包,或者把常用点的包抓出来) 抓几个sqlmap的包 sq ...

  5. 网页游戏 服务器 性能测试工具,简单的压力测试工具

    都说电子产品有着"高消耗"."贬值快"的特点,笔记本可算是PC产品中二手"最不值钱"的代表.不过呢,并不是所有的笔记本二手都不值钱--游戏本 ...

  6. php mysql 性能测试工具下载_MySQL压力测试工具_MySQL

    bitsCN.com MySQL压力测试工具 mysqlslap --create-schema=example --query="SELECT * FROM group_message f ...

  7. 小程序入口构造工具二维码测试工具

    作者 | 吴鹏和 本文将介绍我们小程序中隐藏的两个工具页面.原理虽不复杂,收益却实实在在,或许也能给诸君带来启发. 入口构造工具 痛点 PM&运营 投放链接 PM&运营每次投放新入口时 ...

  8. ab测试工具 linux,超实用压力测试工具-ab工具

    写在前面 在学习ab工具之前,我们需了解几个关于压力测试的概念吞吐率(Requests per second) 概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内 ...

  9. oracle11g压力测试工具,ORACLE RDBMS 压力测试工具:orabm orastress

    官网: 作者:Geoff Ingram 曾就职于oracle开发部门,是<High Performance Oracle>一书的作者 · Orabmload: loads TPC-C co ...

最新文章

  1. 如何提高模型性能?这几个方法值得尝试 | CSDN 博文精选
  2. jQurey 的选择器
  3. python下载word文件-python-docx操作word文件(*.docx)
  4. 蓝桥杯java第五届决赛第四题--排列序数
  5. maven下载spring
  6. linux进程配置异常中断自动重启_Linux系统配置及服务管理 (四)进程管理
  7. mysql简单创建数据库权限(待修改备注)
  8. zigbee与WiFi模块和蓝牙模块的区别是什么?
  9. matlab meshgrid
  10. poj1273Drainage Ditches
  11. 即时通讯成为热门传播媒体
  12. Struts2之struts-2.3.20开发环境的搭建并实现第一个Hello World小应用
  13. python身份证照片识别信息
  14. android USB OTG功能如何打开及实现
  15. (P57-P61)正则表达式
  16. c语言程序小时工资计算,C语言入门之工资计算
  17. 计算机应用基础全解,第三章习题-ddg全解.doc
  18. windows11专业工作站版
  19. mysql不锁表加索引
  20. 【python】注意力机制代码

热门文章

  1. 实时检测服务器延迟和丢包率脚本,使用mtr测试网络丢包率和平均延时的脚本实例...
  2. mysql表e-r关系_数据库E-R图及关系表
  3. Tableau 超市经典案例之利润分析(三)
  4. Python学习十一:Web编程
  5. html2canvas 把h5网页保存为图片 区域保存
  6. 大禹电子风速风向仪防尘问题解析
  7. 国家网信办发布APP管理规定:记录用户日志信息并保存60天
  8. 2022高处吊篮安装拆卸工(建筑特殊工种)考题及在线模拟考试
  9. 基础知识:电容充电放电原理
  10. 【STM32F4教程】第六节:通用定时器之PWM实现呼吸灯