test-02-java 单元测试框架 junit5 入门介绍

拓展阅读

junit5 系列

基于 junit5 实现 junitperf 源码分析

junit5 的入门例子

maven 引入

<dependencies>
    
    <dependency>
        <groupId>org.junit.jupitergroupId>
        <artifactId>junit-jupiter-apiartifactId>
        <version>5.8.2version>
        <scope>testscope>
    dependency>
    <dependency>
        <groupId>org.junit.jupitergroupId>
        <artifactId>junit-jupiter-engineartifactId>
        <version>5.8.2version>
        <scope>testscope>
    dependency>
dependencies>

方法

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
}

测试类

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

public class CalculatorTest {

    @Test
    void testAdd() {
        // Arrange
        Calculator calculator = new Calculator();

        // Act
        int result = calculator.add(3, 7);

        // Assert
        assertEquals(10, result, "3 + 7 should equal 10");
    }
}

详细介绍一下 junit5

JUnit 5 是 Java 中的下一代单元测试框架,与 JUnit 4 相比,它引入了许多新的特性和改进。

JUnit 5 由三个主要模块组成:JUnit Platform、JUnit Jupiter 和 JUnit Vintage。

以下是 JUnit 5 的一些主要特性和概念:

  1. JUnit Platform: JUnit 5 的基础,提供了一个测试平台,用于运行不同测试框架的测试。它还支持通过插件机制扩展测试框架。

  2. JUnit Jupiter: JUnit 5 的新测试引擎,支持最新的测试风格和功能。JUnit Jupiter 提供了注解驱动的测试、参数化测试、条件测试、嵌套测试等功能。

    • 注解驱动的测试: 使用 @Test@BeforeEach@AfterEach 等注解进行测试方法的标记,相比 JUnit 4 更加灵活。

    • 参数化测试: 使用 @ParameterizedTest@ValueSource 等注解,支持在一个测试方法上运行多次,每次使用不同的参数。

    • 条件测试: 使用 @EnabledOnOs@DisabledIf 等条件注解,根据条件动态地启用或禁用测试。

    • 嵌套测试: 使用 @Nested 注解,支持更好地组织测试类,使测试结构更清晰。

  3. JUnit Vintage: 为了兼容 JUnit 3 和 JUnit 4 测试,JUnit 5 提供了 Vintage 引擎,使得旧有的测试可以在 JUnit 5 平台上运行。

  4. 测试接口和默认方法: JUnit 5 允许在测试接口中使用 @Test 和其他测试相关的注解,并且支持在接口中定义默认方法。这使得共享测试代码更为灵活。

  5. 扩展模型: JUnit 5 引入了扩展模型,通过编写自定义扩展,可以对测试执行过程中的各个阶段进行扩展和定制。这是一个强大的特性,用于实现更高级的测试控制和集成。

  6. 动态测试注册: JUnit 5 引入了 TestFactory 注解,使得测试可以在运行时动态生成。这对于根据运行时条件生成测试非常有用。

  7. 条件测试: JUnit 5 提供了 @EnabledOn@DisabledOn@EnabledIf@DisabledIf 等注解,可以根据条件启用或禁用测试。

  8. JUnit Platform Launcher API: 允许通过编程方式运行测试,支持集成到不同的构建工具和 IDE 中。

  9. 并发测试支持: JUnit 5 提供了 @RepeatedTest 注解,支持更方便地编写和执行并发测试。

  10. 参数解析和转换: JUnit 5 提供了强大的参数解析和转换功能,使得测试方法可以接受更复杂的参数类型,并支持自定义的参数解析器。

小结

junit5 对比 junit4 可以说是划时代的提升。

这么多年过去了,就算是再顽固的系统,现在也开始使用 jdk1.8 了,这一点令人欣慰。

junit5 是新时代的单元测试,所以忘掉你的 junit4 吧。

你可能感兴趣的:(test,junit,java,单元测试,开发语言)