前面一节,介绍了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);
}
}
- 字段声明为public static
这点与Rule不同。 - 字段类型为TestRule的子类型。
这点与Rule相同。
上节说明的8种类型,皆可使用。 -
ClassRule注解的语句,只执行一次。
这点与Rule不同。
Rule注解的语句,在每个测试方法运行时,都运行一次。
上面例子,如果是Rule注解,则表示每一个测试方法的运行时间,不能超过3000ms。
使用ClassRule注解,所表达的意思是,这一测试类所有测试方法的运行时间,不能超过3000ms。
运行结果如下:
result.png
二、注意
ClassRule注解,所对应的语句,最先执行,或,最后执行。
也就是说,比BeforeClass更早,或,比BeforeAfter更晚。
网友评论
陈权说:咱们地隔千里,每天相互串门!从未互怼,只有互赞和好评。