Java 杂谈Java学习笔记程序员

【JAVA UT】14、设置全局条件--ClassRule

2018-04-08  本文已影响64人  码术张

前面一节,介绍了Rule。
这节将介绍ClassRule。
它们既相同,又有不同。
ClassRule也是一种注解,用于设置测试时的一些条件。
既可以注解字段,也可以注解方法。
我推荐,测试方法只用@Test注解,不使用其他注解。
这也是对SRP原则的一种应用。
下面,说明如何使用ClassRule来注解一个字段。

一、如何使用ClassRule来注解一个字段

举例如下:

public class ClassRuleTest {
  @ClassRule
  public  static Timeout timeout = Timeout.millis(3000);

  @Test
  public void should_timeout1() throws InterruptedException {
    System.out.println("Hi...");
    Thread.sleep(2000);
  }

  @Test
  public void should_timeout2() throws InterruptedException {
    System.out.println("Hello...");
    Thread.sleep(2000);
  }

}
  1. 字段声明为public static
    这点与Rule不同。
  2. 字段类型为TestRule的子类型。
    这点与Rule相同。
    上节说明的8种类型,皆可使用。
  3. ClassRule注解的语句,只执行一次。
    这点与Rule不同。
    Rule注解的语句,在每个测试方法运行时,都运行一次。
    上面例子,如果是Rule注解,则表示每一个测试方法的运行时间,不能超过3000ms。
    使用ClassRule注解,所表达的意思是,这一测试类所有测试方法的运行时间,不能超过3000ms。
    运行结果如下:


    result.png
二、注意

ClassRule注解,所对应的语句,最先执行,或,最后执行。
也就是说,比BeforeClass更早,或,比BeforeAfter更晚。

上一篇 下一篇

猜你喜欢

热点阅读