结合JUnit来说明反射和注解的用途

 

  没有反射,很多框架就都不存在了。(No Reflection, no most frameworks).

 

JUnit简单介绍

  JUnit(3.8,4.x):基于Java的单元测试。

  JUnit 3.8是基于反射,JUnit 4.x是基于反射和注解的。

  使用时首先导入jar包:在项目名上右键,配置Java Build Path,选择Add Library..,然后选择JUnit。之后选择版本3或者4。

  如果选JUnit 3,则加好后如下:

 

 

 

    测试程序运行结果如下图:

  

 

  Keep the bar green to keep the code clean.

 

  JUnit 3中方法必须以test开头才能被找到。说明是通过反射来找到并调用方法。

  

  如果选用JUnit 4,则测试例子代码可以如下:

import org.junit.Test;

public class Test2
{
      @Test
      public void hello()
      {
             System.out.println("Hello World!");
      }
}

  

  通过一个注解,怎么找到要执行的方法?

 

  JUnit 4的一般执行流程

  首先,获取待测试类所对应的Class对象,然后就可以获取其中的所有方法(JUnit要求所有方法都是public的)。

  获取了所有方法的Method对象,对于每个Method对象,通过调用isAnnotationPresent(Test.class)方法,可以检查方法是否有名为Test的注解,如果有这个注解,则调用Method对象的invoke()方法来执行这个方法。

 

参考资料

  张龙老师Java SE系列视频教程。

  单元测试不是为了证明你是对的,而是证明你没有错误。

  Writing Secure Code(编写安全的代码):Input is evil.

 

posted @ 2013-02-02 16:08  圣骑士wind  阅读(3502)  评论(0编辑  收藏  举报