模拟@Test的功能实现代码

1.1.1 需求:
定义一个类,在类中编写一些测试方法:测试方法的格式:public void xxx() 在测试方法上添加@MyTest 然后可以使这个类中添加了有@MyTest注解的方法执行.
1.1.2 分析:1.1.2.1 技术分析:
【注解的概述】


? 注解和注释区别:

* 注释:给程序员看的.

* 注解:给虚拟机看的.(让虚拟机看到程序中的注解,注解代表程序的一些特殊的功能.)

【JDK中提供的注解】

? @Override        :描述子类重写父类的方法:

* JDK1.5版本的时候 该注解只能应用在 类的继承上.

* JDK1.6版本的时候 该注解可以应用在 类的实现上.

? @SuppressWarnings        :压制警告.

? @Deprecated        :描述方法过时.

【自定义注解】

? 自定义注解:

* 定义类        :class

* 定义接口        :interface

* 定义枚举        :enum

* 定义注解        :@interface

? 代码实现:

/**

 * 定义一个注解:名称是Anno1

 */

@interface Anno1{

}

? 定义注解的属性:

 Invalid type Date for the annotation attribute Anno2.d; only primitive type, String, Class, annotation, enumeration are permitted or 1-dimensional arrays thereof

* 注解的属性的类型:

    * 基本数据类型:

    * String类型:

    * Class类型:

  * 注解类型:

    * 枚举类型:

    * 以上类型的一维数组:
  • 代码实现:
/**

 * 定义一个带有属性的注解:Anno2

 */

@interface Anno2{

int a();

boolean b() default false;

String s();

// Date d();

Class c();

Anno1 anno1();

Color color();

String[] arrs();

}

***** 特殊的属性名称:value

 * 如果使用注解的时候,只出现了value属性,value属性可以省略的.

1.1.3 代码实现:

【步骤一】:自定义注解:MyTest

【步骤二】:定义核心运行类.

【步骤三】:在核心运行类中.

    * 获得测试类的Class

    * 获得Class中的所有方法.

    * 遍历得到每个方法.

    * 判断方法上有MyTest注解,就执行该方法.

         * 自定义注解默认存在于源码阶段,需要让注解存在的时间更长.使用元注解:(只用于修饰其他的注解)

代码:

public class CoreRunner {

public static void main(String[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, InstantiationException {
/**

 * 获得测试类的Class.

 * 获得Class中的所有的方法.

 * 遍历每个方法,查看每个方法上是否有MyTest注解.

 * 有MyTest注解,这个方法就执行.

 */

// 1.获得测试类的Class:

Class clazz = AnnotationDemo1.class;

// 2.获得Class中的所有的方法: 规定了测试的方法必须是public.

Method[] methods = clazz.getMethods();

// 3.遍历每个方法:

for(Method method:methods){

boolean flag = method.isAnnotationPresent(MyTest.class);

// System.out.println(method.getName()+ "     " + flag);

if(flag){

// 说明方法上有MyTest注解:

method.invoke(clazz.newInstance(), null);

}

}

}

}

原文地址:http://blog.51cto.com/13587708/2135371

时间: 2024-10-28 04:23:34

模拟@Test的功能实现代码的相关文章

ListView模拟微信好友功能

ListView模拟微信好友功能 效果图: 分析: 1.创建listView 2.创建数据 3.创建适配器 将数据放到呈现数据的容器里面. 将这个容器(带数据)连接适配器. 4.ListView设置适配器 代码: 1 package fry; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import com.example.weChatFriends.R; 7 8 import android.app.Activity

Python 操作文件模拟SQL语句功能

Python操作文件模拟SQL语句功能 一.需求 当然此表你在文件存储时可以这样表示 1,Alex Li,22,13651054608,IT,2013-04-01 现需要对这个员工信息文件,实现增删改查操作 1. 可进行模糊查询,语法至少支持下面3种: 1. select name,age from staff_table where age > 22 2. select * from staff_table where dept = "IT" 3. select * from

JS模拟select控件的代码

用JavaScript模拟实现Select下拉选框功能,在本效果的实现上,背景图片起到了非常重要的美化作用,然后用CSS和JS分别对LI进行控制,最终实现漂亮的Select效果. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns=&q

【教程】模拟登陆百度之Java代码版

[背景] 之前已经写了教程,分析模拟登陆百度的逻辑: [教程]手把手教你如何利用工具(IE9的F12)去分析模拟登陆网站(百度首页)的内部逻辑过程 然后又去用不同的语言: Python的: [教程]模拟登陆网站 之 Python版(内含两种版本的完整的可运行的代码) C#的: [教程]模拟登陆网站 之 C#版(内含两种版本的完整的可运行的代码) 去实现对应逻辑. 此处,继续尝试,用Java代码,实现这套,模拟登陆百度,的逻辑. [折腾过程] 1.之前已经整理了一些Java代码: http://c

EA强大功能之代码注释

前面讲了EA如何方便我们生成代码,这次讲一下,如何生成详细的注释. 1.文件表头注释 (1)点击工具----选项 在常规项里修改作者: 在代码工程中修改代码工程的默认语言. (2)修改文件模板 点击代码工厂模板以后如图: 修改语言--点击File,修改模板.点击保存.完成. 2.类表头注释:(以SqlUserDAL类为例) 修改类的信息,如图所示: 3.方法前注释 添加一个类的方法,填写齐全的信息.如图: 法前的注释主要是介绍本方法的功能以及参数,所以填写全这两个就行. 4.参数的注释 点击编辑

.Net Web产品中增加自己的功能和代码?

背景: 最近有一个项目,一个朋友找了一个网上比较成熟的CMS系统(动易),让我给他增加一些功能,这个产品功能挺多,但是没有源代码.按照以前的做法,就是直接反编译他的dll,生成源代码,然后在源代码的基础上修改和完善自己的功能.但是研究了一下这个产品,bin下面的DLL非常多,有主要的,还有辅助的.如果每个dll都反编译,简直不现实. ? 用发编译工具?ILSpy打开里面几个主要的dll,发现还加壳混淆了,用De4Dot反混淆出来.里面的代码还是非常清晰,但是如果每个dll都这样搞,岂不累死. ?

EA强大功能之代码凝视

前面讲了EA怎样方便我们生成代码,这次讲一下,怎样生成具体的凝视. 1.文件表头凝视 (1)点击工具----选项 在常规项里改动作者: 在代码project中改动代码project的默认语言. (2)改动文件模板 点击代码工厂模板以后如图: 改动语言--点击File,改动模板.点击保存.完毕. 2.类表头凝视:(以SqlUserDAL类为例) 改动类的信息,如图所看到的: 3.方法前凝视 加入一个类的方法,填写齐全的信息.如图: 法前的凝视主要是介绍本方法的功能以及參数,所以填写全这两个即可.

通过.NET实现后台自动发送Email功能的代码示例

原文:通过.NET实现后台自动发送Email功能的代码示例 通过.NET实现后台自动发送邮件功能的代码,可以将一些基础信息放到web.config文件中进行保存: Web.config文件信息段: <system.net> <mailSettings> <smtp deliveryMethod="Network" from="待发送邮箱地址"> <network host="待发送邮箱SMTP地址" us

WPF DataGrid分页功能实现代码 修改原作者不能实现的部分

这两天需要给Datagrid加个分页,查找了一些相关的文章,发现有一个写了一个控件比较好,地址是 http://blog.csdn.net/zdw_wym/article/details/8221894 感谢这位大神12年的帖子,但是照着做了以后,发现除了点击数字和GO按钮好使意外,神马“首页.上一页.下一页.末页”都不好使. 继续找寻相关的资料和查看大神的源码,发现有的地方写的不对,因为textblock没有click事件,而大神写了click事件,所以没有得到触发,介于这个问题,我稍作了修改