1、什么是JUnit5
JUnit5
是一个用于编写可重复测试的简单框架。目标是为Java
测试创建一个最新的测试框架。这包括专注于 Java 8
及更高版本,以及启用许多不同风格的测试。
2、导入坐标
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.7.0</version>
<scope>test</scope>
</dependency>
3、入门案例
public class Demo1 {
@Test
public void test() {
System.out.println("JUnit5 testing...");
}
}
输出结果:
JUnit5 testing...
4、常用注解
注解 | 描述 |
---|---|
@Test |
表示方法是测试方法。 |
@ParameterizedTest |
表示方法是参数化测试。 |
@RepeatedTest |
表示方法是重复测试的测试模板。 |
@TestFactory |
表示方法是动态测试的测试工厂。 |
@TestTemplate |
表示方法是测试用例的模板,设计为根据注册提供程序返回的调用上下文的数量多次调用。 |
@TestMethodOrder |
用于为注解的测试类配置测试方法执行顺序。 |
@TestInstance |
用于为带注释的测试类配置测试实例生命周期。 |
@DisplayName |
声明测试类或测试方法的自定义显示名称。 |
@DisplayNameGeneration |
为测试类声明一个自定义显示名称生成器。 |
@BeforeEach |
表示被注解的方法应该在当前类中的每个 @Test ,@RepeatedTest ,@ParameterizedTest ,或@TestFactory 方法之前执行。 |
@AfterEach |
表示该注释的方法应该被执行之后 每个 @Test ,@RepeatedTest ,@ParameterizedTest ,或@TestFactory 方法在当前类; |
@BeforeAll |
表示该注释的方法应该被执行之前 所有 @Test ,@RepeatedTest ,@ParameterizedTest ,和@TestFactory 方法在当前类。 |
@AfterAll |
表示该注释的方法应该被执行之后 的所有 @Test ,@RepeatedTest ,@ParameterizedTest ,和@TestFactory 方法在当前类。 |
@Nested |
表示被注解的类是一个非静态嵌套测试类。@BeforeAll 和@AfterAll 方法不能直接在@Nested 测试类中使用,除非使用每类测试实例生命周期。 |
@Tag |
用于在类或方法级别声明过滤测试的标签;类似于 TestNG 中的测试组。 |
@Disabled |
用于禁用测试类或测试方法; |
@Timeout |
如果测试、测试工厂、测试模板或生命周期方法的执行超过给定的持续时间,则用于使测试失败。此类注释是继承的。 |
@ExtendWith |
用于以声明方式注册扩展。 |
@RegisterExtension |
用于通过字段以编程方式注册扩展。 |
@TempDir |
用于在生命周期方法或测试方法中通过字段注入或参数注入提供临时目录;位于org.junit.jupiter.api.io 包中。 |
5、元注解和组合注解
JUnit
注解可以用作元注释
,这意味着可以自定义注释。
例如,直接用@Tag("fast")
,如下:
@Tag("fast")
@Test
public void test2() {
System.out.println("fast test");
}
可改为,先自定义一个@Fast
注解,如下:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.junit.jupiter.api.Tag;
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Tag("fast")
public @interface Fast {
}
在使用@Fast
注解在方法或者类上,如下:
@Fast
@Test
public void test3() {
System.out.println("fast test3");
}
还可以把@Test
注解和@Fast
组合成一个新的@FastTest
注解,如下:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Tag("fast")
@Test
public @interface FastTest {
}
使用@FastTest
可以省略@Test
注解,如下:
@FastTest
public void test4() {
System.out.println("fast test4");
}
欢迎来到testingpai.com!
注册 关于