1.
Junit(3.8、4.x):keep the bar green to
keep the code clean.
没有反射,很多框架就不存在了。
3.8基于反射,4.x基于注解
2.
Junit4的执行的一般流程:
a)
首先获得带测试类所对应的Class对象
b)
然后通过该Class对象获得当前类当中所有public方法所对应的Method数组
c)
遍历该Method数组,取得每一个Method对象
d)
调用每个Method对象isAnnotationPresent(Test.class)方法,判断该方法是否被Test注解所修饰
e)
如果该方法返回true,那么调用method.invoke()方法去执行该方法,否则不执行。
3.
单元测试不是为了证明你是对的,而是证明你没有错误。
4.
异常(Exception)。(java所有的异常类都直接或间接的继承于Exception类)
a)
Java中异常分为两大类
i.
Checked exception(非
Runtime Exception)
ii.
Unchecked exception(Runtime Exception)
b)
RuntimeException类也是直接继承自Exception类,它叫做运行时异常,java中所有的运行时异常都会直接或间接地继承自RuntimeException
c)
凡是继承自Exception类,而不是继承自RuntimeException的类都叫做非运行时异常。
5.
Throwable有两个直接子类,Error和Exception.
a)
发生异常时,后面的代码不会再执行(是我们能处理的,我们可以采取一定的措施补救)
b)
发生错误时,我们没法再进行处理,就随他去了,不必再管了
6.
异常处理的一般结构:
try
{
}
catch(Exception e)
{
//e是异常时生成的对象作为参数传进来,有多个catch时,只执行一个。
}
finally
{
}
7.
对于非运行时异常(checked
exception),必须要对其进行处理,处理方式有两种:第一种是使用try…catch…finally进行捕获;第二种是在调用该会产生异常的方法所在的地方申明throws
Exception
8.
对于运行时异常,我们可以不对其进行处理,也可以对其进行处理,推荐不处理
9.
NullPointerException是空指针异常,出现该异常的原因在于某个引用为null,却任然调用了其方法,这时会出现该异常
10.
所谓自定义异常,通常就是定义一个继承自Exception类的子类,那么这个类就是一个自定义异常类。通常情况下,我们都会直接继承自Exception类,一般不会继承某个运行时异常类。
11.
我们可以使用多个catch块来捕获异常,这是需要将父类型的catch块放到子类型的catch块之后,这样才能保证后续的catch可能别执行,否则子类的catch块将永远无法到达,java编译器会报编译错误;如果多个catch块的异常类型是独立的,那么顺序前后无关紧要
12.
在try块里面有return时,先需要执行finally块中的代码,然后再return
13.
在try块里面有System.exit(0);语句,那么就不会执行finally块中的代码,直接退出,因为System.exit(0)会终止当前运行的java虚拟机,程序会在虚拟机终止前结束执行