- 单元测试应用于方法,一般用于测试业务逻辑
- 以下是单元测试常用的注解:
常用注解 |
说明 |
@Test |
表示方法是一种测试方法。 与 JUnit 4 的@Test 注解不同,此注释不会声明任何属性。 |
@TestFactory |
表示方法是动态测试的测试工程 |
@TestInstance |
用于配置测试实例生命周期 |
@TestTemplate |
表示方法是为多次调用的测试用例的模板 |
@TestMethodOrder |
指定测试顺序 |
@TempDir |
临时目录 |
@Tag |
用于在类或方法级别声明用于过滤测试的标记 |
@ParameterizedTest |
表示方法是参数化测试 |
@RepeatedTest |
表示方法是重复测试模板 |
@RegisterExtension |
通过字段注册扩展 |
@DisplayName |
为测试类或者测试方法自定义一个名称 |
@DisplayNameGeneration |
测试名字统一处理 |
@Disabled |
用于禁用测试类或测试方法 |
@BeforeEach |
表示方法在每个测试方法运行前都会运行 |
@BeforeAll |
表示方法在所有测试方法之前运行 |
@AfterEach |
表示方法在每个测试方法运行之后都会运行 |
@AfterAll |
表示方法在所有测试方法之后运行 |
@Nested |
表示带注解的类是嵌套的非静态测试类,@BeforeAll 和@AfterAll 方法不能直接在@Nested 测试类中使用,除非修改测试实例生命周期。 |
@ExtendWith |
用于注册自定义扩展,该注解可以继承 |
条件注解 |
说明 |
@EnabledOnOs |
表示允许在指定的操作系统上运行指定的测试类或者测试方法。 |
@DisabledOnOs |
表示禁止在指定的操作系统上运行指定的测试类或者测试方法。 |
@EnabledOnJre |
表示运行在指定版本java的运行环境上运行测试类或者方法。 |
@DisabledOnJre |
表示禁止在指定版本java的运行环境上运行测试类或者方法。 |
@EnabledIfSystemProperty |
表示允许在满足JVM系统属性值的情况下运行测试类或者方法。其中name表示属性值的key,matches表示属性值是否匹配(可以用正则表达式) |
@DisabledIfSystemProperty |
表示禁止在满足JVM系统属性值的情况下运行测试类或者方法。其中name表示属性值的key,matches表示属性值是否匹配(可以用正则表达式) |
@EnabledIfEnvironmentVariable |
表示运允许在满足底层操作系统属性值的情况下运行测试类或者方法。其中name表示属性值的key,matches表示属性值是否匹配(可以用正则表达式) |
@DisabledIfEnvironmentVariable |
表示运禁止在满足底层操作系统属性值的情况下运行测试类或者方法。其中name表示属性值的key,matches表示属性值是否匹配(可以用正则表达式) |
示例
@DisplayName("who am i") public class BasicTest {
public BasicTest() { System.out.println("Instance"); }
@Test void firstTest() { System.out.println("First test"); }
@Tag("second") @Test void secTest() { System.out.println("Second test"); }
@BeforeEach void beforeRun() { System.out.println("BeforeEach"); }
@BeforeAll static void beforeStaticRun() { System.out.println("BeforeAll"); }
@AfterEach void afterRun() { System.out.println("AfterEach"); }
@AfterAll static void afterStaticRun() { System.out.println("AfterAll"); }
@Test @Disabled("skip run") @DisplayName("厉害了") void skipRun() { System.out.println("disabled"); } } |