Junit4
JUnit4 全面引入了 Annotation 来执行我们编写的测试。
1. JUnit 4 并不要求测试类继承 TestCase 父类。
2. 在一个测试类中,所有被@Test 注解所修饰的public,void 方法都是 test case,可以被JUnit 所执行。
3. 虽然 JUnit 4 并不要求测试方法名以test 开头,但我们最好还是按照 JUnit 3.8的要求那样,以test 作为测试方法名的开头。
4. 在JUnit 4中,通过@Before注解实现与JUnit3.8中的setUp方法同样的功能,通过@After 注解实现与JUnit 3.8 中的 tearDown 方法同样的功能。
5. 在 JUnit 4 中,可以使用@BeforeClass与@AfterClass 注解修饰一个public static void no-arg 的方法,这样被@BeforeClass 注解所修饰的方法会在所有测试方法执行前执行;被@AfterClass 注解所修饰的方法会在所有测试方法执行之后执行。
6. @Ignore 注解可用于修饰测试类与测试方法,当修饰测试类时,表示忽略掉类中的所有测试方法;当修饰测试方法时,表示忽略掉该测试方法。
7. 参数化测试(Parameters)
当一个测试类使用参数化运行器运行时,需要在类的声明处加上@RunWith(Parameterized.class)注解,表示该类将不使用 JUnit内建的运行器运行,而使用参数化运行器运行;在参数化运行类中提供参数的方法上要使用@Parameters 注解来修饰,同时在测试类的构造方法中为各个参数赋值(构造方法是由 JUnit 调用的),最后编写测试类,它会根据参数的组数来运行测试多次。
8. 在JUnit 4 中,如果想要同时运行多个测试,需要使用两个注解:
@RunWith(Suite.class)以及@Suite.SuiteClasses(),通过这两个注解分别指定使用 Suite 运行器来运行测试,以及指定了运行哪些测试类,其中的@SuiteClasses 中可以继续指定Suite,这样 JUnit 会再去寻找里面的测试类,一直找到能够执行的 Test Case 并执行之。
9. 测试类的私有方法时可以采取两种方式:
1)修改方法的访问修饰符,将 private 修改为default 或 public(但不推荐采取这种方式)。
2)使用反射在测试类中调用目标类的私有方法(推荐)。
10.TestSuite(测试套件):可以将多个测试组合到一起,同时执行多个测试。
11.JUnit 中要区分错误(error)与失败(failure)
1)错误指的是代码中抛出了异常等影响代码正常执行的情况,比如抛出了ArrayIndexOutOfBoundsException,这就叫做错误。
2)失败指的是我们断言所期待的结果与程序实际执行的结果不一致,或者是直接调用了 fail()方法,这叫做失败。
12.JUnit 中所使用的观察者模式