Junit3.8 的最佳实践:
- 测试类必须要继承TestCase,且要注意
- sds
- public
- void
- 无方法参数
- 方法名必须以test打头
- Test Case 之间一定要保持完全的独立性,不允许出现任何依赖关系。
- 不能依赖于测试方法的执行顺序。
- 关于setUp与tearDown方法的执行顺序:
setUp() ——> testXxx() ——> tearDown() ——>setUp()——>testXxx()——>tearDown() - 私有类测试方法时:
- 修改访问修饰符,将private修改为default 或者 public (不推荐)。
- 采用反射在测试类中调用目标类的私有方法。
- TestSuite (测试套件) : 可以将多个测试组合到一起,同时执行多个测试。
- suite()方法是static的。
- RepeatedTest :
- 目标测试类必须实现带参数构造方法。
- repeate的是测试类的某一个方法。不是整个测试类。
Junit4 的最佳实践:
- Junit4 全面引入Annotation来执行编写的测试类。
- Junit4 不要求测试类继承TestCase父类。
- 在一个测试类中,所有被@Test注解所修饰的 public, void 的方法都是test case。
- Junit4 不要求测试方法名以test开头,但是我们最好按照3.8的要求,以test作为测试方法名的开头。
- Junit4 中,通过 @Before 注解来实现与Junit 3.8 中的setUp() 方法同样的功能,通过 @After 注解实现与Junit 3.8 中的tearDown() 方法同样的功能。
- Junit4 中,可以使用 @BeforeClass 与 @AfterClass 注解修饰一个public static void no-args 的方法,这样被 @BeforeClass 修饰的方法会在所有测试方法执行之前执行;被 @AfterClass 注解所修饰的方法会在所有测试方法执行之后执行。
- @Ignore 注解可以用于修饰测试类与测试方法。
- 当修饰测试类时,表示忽略掉类中的所有测试方法;
- 当修饰方法时,表示忽略该测试方法。
- 参数化测试 (Parameterized):当一个测试类使用参数化运行器运行时,需要在类的声明处加上 @RunWIth(Parameterized.class) 注解,表示该类将不使用Junit 内建的运行器运行,而使用参数化运行器运行;在参数化运行类中提供参数的方法上要加@Parameters 注解来修饰,同时在测试类的构造方法中为各个参数赋值(构造方法是由Junit调用的),最后编写测试类,它会根据参数的组数来运行测试多次。
- Junit 4 中,如果想要同时运行多个测试(TestSuit),需要使用两个注解:@RunWith(Suite.class) 以及 @SuiteClass({}),通过这两个注解分别指定Suite运行器来运行测试,以及指定了哪些测试类,其中 @SuiteClass 中可以继续指定Suite,这样Junit会再去寻找里面的测试类,一直找到能够执行的TestCase并执行。