结合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.