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虚拟机,程序会在虚拟机终止前结束执行