Java之工具-------Junit自己的测试工具MyJUnit
学习底层,能让我们更清楚的运用所调用的函数或对象
一个小小的例子 (注解与反射共同使用的案例 )
解释:
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相关推荐
- MATLAB/ SIMULINK模型在环MIL测试工具,自动化模型测试工具,自动生成测试报告
MATLAB/ SIMULINK模型在环MIL测试工具,自动化模型测试工具,自动生成测试报告. 软件纯自己编写,经过长时间测试,包教会. 使用简单,可以参考如下截图. ID:9720006772002 ...
- java 测试工具 oracle_几种测试工具的简单介绍
负载测试(Load Test):负载测试是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担. 二.WinRunner WinRunner 是一种企业级的功能测试工具,用于检验企业应用程序是否能 ...
- 基于Java实现的Web服务器与测试工具开发
资源下载地址:https://download.csdn.net/download/sheziqiong/85706486 资源下载地址:https://download.csdn.net/downl ...
- java写渗透工具_常用渗透测试工具使用tips
(7)sqlmap(python脚本学习下) 经典sql注入工具 (这种针对参数的工具,不知道是不是扫描方式有问题,还是怎么着,怎么才能抓几个包,或者把常用点的包抓出来) 抓几个sqlmap的包 sq ...
- 网页游戏 服务器 性能测试工具,简单的压力测试工具
都说电子产品有着"高消耗"."贬值快"的特点,笔记本可算是PC产品中二手"最不值钱"的代表.不过呢,并不是所有的笔记本二手都不值钱--游戏本 ...
- php mysql 性能测试工具下载_MySQL压力测试工具_MySQL
bitsCN.com MySQL压力测试工具 mysqlslap --create-schema=example --query="SELECT * FROM group_message f ...
- 小程序入口构造工具二维码测试工具
作者 | 吴鹏和 本文将介绍我们小程序中隐藏的两个工具页面.原理虽不复杂,收益却实实在在,或许也能给诸君带来启发. 入口构造工具 痛点 PM&运营 投放链接 PM&运营每次投放新入口时 ...
- ab测试工具 linux,超实用压力测试工具-ab工具
写在前面 在学习ab工具之前,我们需了解几个关于压力测试的概念吞吐率(Requests per second) 概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内 ...
- oracle11g压力测试工具,ORACLE RDBMS 压力测试工具:orabm orastress
官网: 作者:Geoff Ingram 曾就职于oracle开发部门,是<High Performance Oracle>一书的作者 · Orabmload: loads TPC-C co ...
最新文章
- 如何提高模型性能?这几个方法值得尝试 | CSDN 博文精选
- jQurey 的选择器
- python下载word文件-python-docx操作word文件(*.docx)
- 蓝桥杯java第五届决赛第四题--排列序数
- maven下载spring
- linux进程配置异常中断自动重启_Linux系统配置及服务管理 (四)进程管理
- mysql简单创建数据库权限(待修改备注)
- zigbee与WiFi模块和蓝牙模块的区别是什么?
- matlab meshgrid
- poj1273Drainage Ditches
- 即时通讯成为热门传播媒体
- Struts2之struts-2.3.20开发环境的搭建并实现第一个Hello World小应用
- python身份证照片识别信息
- android USB OTG功能如何打开及实现
- (P57-P61)正则表达式
- c语言程序小时工资计算,C语言入门之工资计算
- 计算机应用基础全解,第三章习题-ddg全解.doc
- windows11专业工作站版
- mysql不锁表加索引
- 【python】注意力机制代码