JUnit5——入门

  • Post author:
  • Post category:其他


1. JUnit5 组成


JUnit 5 =

JUnit Platform

+

JUnit Jupiter

+

JUnit Vintage

JUnit Platform:为在JVM上启动测试框架提供基础。它还定义了TestEngine API, 用来开发在平台上运行的测试框架。此外,平台提供了一个控制台启动器,用于从命令行启动平台,并为Gradle和Maven提供构建插件以及基于 JUnit 4的Runner,用于在平台上运行任意 TestEngine 。

JUnit Jupiter是在JUnit 5中编写测试和扩展的新型编程模型和扩展模型的组合.Jupiter子项目提供 了 TestEngine ,用于在平台上运行基于Jupiter的测试。

JUnit Vintage提供 TestEngine ,用于在平台上运行基于JUnit 3和JUnit 4的测试。

2. 注解

注解 描述


@Test


表示该方法是测试方法。与


JUnit4





@Test


注解不同的是,这个注解没有声明任何属性。


@ParameterizedTest


表示该方法是


参数化测试

方法。


@RepeatedTest


表示该方法是用于


重复测试


的测试模板。


@TestFactory


表示该方法是用于


动态测试


的测试工厂。


@TestTemplate


表示方法是


测试用例的模板


,设计为被调用多次,调用次数取决于注册提供者返回的调用上下文。


@TestMethodOrder

用于配置带注解测试类的测试方法执行顺序;类似于JUnit 4的@FixMethodOrder。


@TestInstance

用于为带注解的测试类配置测试实例生命周期。


@DisplayName

声明测试类或测试方法的自定义名称。


@DisplayNameGeneration

声明测试类的自定义名称生成器。


@BeforeEach


表示被注解的方法应在当前类的每个


@Test





@RepeatedTest





@ParameterizedTest





@TestFactory


方法之前执行


;


类似于


JUnit 4





@Before




@AfterEach


表示被注解的方法应在当前类的每个


@Test





@RepeatedTest





@ParameterizedTest





@TestFactory


方法之后执行


;


类似于


JUnit 4





@After




@BeforeAll


表示被注解的方法应该在当前类的所有


@Test





@RepeatedTest





@ParameterizedTest





@TestFactory


方法之前执行


;


类似于


JUnit 4





@BeforeClass


。必须是静态方法。


@AfterAll


表示被注解的方法应该在当前类的所有


@Test





@RepeatedTest





@ParameterizedTest





@TestFactory


方法之后执行


;


类似于


JUnit 4





@AfterClass


。必须是静态方法。


@Nested


表示被注解的类是一个嵌套的非静态测试类。


@Tag


在类或方法级别声明标签,用于过滤测试


;


类似于


TestNG


中的


test group





JUnit 4中的 Categories


。这个注释可以在类级别上继承,但不能在方法级别上继承。


@Disabled


用于禁用测试类或测试方法


;


类似于


JUnit4





@Ignore




@Timeout

如果执行超过给定的时间,则使 test, test factory, test template, or lifecycle method 失败。


@ExtendWith


用于注册自定义


扩展


@RegisterExtension

用于通过字段以编程方式注册扩展名。


@TempDir

用于通过 lifecycle method或test method中的字段注入或参数注入来提供临时目录。

【注】

方法被


@Test


,


@TestTemplate


,


@RepeatedTest


,


@BeforeAll


,


@AfterAll


,


@BeforeEach


,





@AfterEach 注解了都不能有返回值,都应该是


public void XXX(args… ){ … }


这样的方法 。

3. 示例

maven 依赖

        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-launcher</artifactId>
            <version>1.7.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.7.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
            <version>5.7.0</version>
            <scope>test</scope>
        </dependency>
    @Test
    public void testCase(){
        Assertions.assertEquals(2,1+1);
    }



版权声明:本文为qq_41573234原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。