JUnit 5 用于 Java:完整指南及示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

JUnit 5 简介



JUnit 5 是一个用于 Java 语言的现代单元测试框架。它是广受欢迎的 JUnit 4 的演进版本,并作为编写自动化测试的事实标准融入 Java 生态系统。JUnit 5 不仅仅是一次更新,而是一个完全重新设计的架构,由三个子项目组成:JUnit Platform(测试启动)、JUnit Jupiter(新的编程和扩展模型)和 JUnit Vintage(向后兼容 JUnit 3/4)。



为什么需要 JUnit 5?在现代开发中(尤其是在 TDD——测试驱动开发方法论中),测试不是可选项,而是必经阶段。JUnit 5 允许:

  • 自动化代码检查: 一键运行数百个测试。
  • 确保回归可靠性: 确保新代码不会破坏旧功能。
  • 改进代码设计: 可测试的代码通常更具模块化且耦合度更低。
  • 记录行为: 测试作为活文档,展示类或方法应如何工作。
  • 集成到 CI/CD: JUnit 5 易于集成到 Maven、Gradle、Jenkins、GitHub Actions 中。


JUnit 5 相比 JUnit 4 的关键创新:新一代注解(@Test、@ParameterizedTest、@Nested)、强大的扩展系统(Extensions)、对 lambda 表达式和流式 API 的支持,以及内置的参数化和动态测试支持。



安装 JUnit 5



由于 Java 是一种编译型语言,安装通过依赖管理器(Maven 或 Gradle)进行。JUnit 5 不能通过 pip 或 npm 安装。以下是两种最流行构建系统的说明。



通过 Maven 安装 (pom.xml)

将以下依赖项添加到您的 pom.xml 文件中。建议使用最新的稳定版本(撰写本文时为 5.11.0,请查看 MVNRepository 上的最新版本)。

<dependencies>    <!-- JUnit Jupiter 主模块(包含 API、Engine 和参数化) -->    <dependency>        <groupId>org.junit.jupiter</groupId>        <artifactId>junit-jupiter</artifactId>        <version>5.11.0</version>        <scope>test</scope>    </dependency>    <!-- (可选)用于与 JUnit 4 兼容 -->    <dependency>        <groupId>org.junit.vintage</groupId>        <artifactId>junit-vintage-engine</artifactId>        <version>5.11.0</version>        <scope>test</scope>    </dependency></dependencies>


通过 Gradle 安装 (build.gradle)

在 dependencies 部分添加:

dependencies {    testImplementation 'org.junit.jupiter:junit-jupiter:5.11.0'    // (可选)用于 JUnit 4    testImplementation 'org.junit.vintage:junit-vintage-engine:5.11.0'}

test { useJUnitPlatform() // 必须启用 JUnit 5}


无构建系统安装(纯 Java)

如果您不使用 Maven/Gradle,请从官方仓库下载 JAR 文件并将其添加到项目的 classpath 中。但对于实际项目,强烈不推荐这样做。



快速入门:JUnit 5 的第一个测试



让我们创建一个简单的 Calculator 类并为其编写测试。



1. 待测试类 (Calculator.java):

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

public int divide(int a, int

推荐