0Pricing
DevOps Bootcamp · 课时

使用 GitHub Actions 运行测试

将自动化单元测试和集成测试接入 CI 流水线,确保代码质量并防止回归问题

使用 GitHub Actions 运行测试 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。

为什么要在 CI 中自动运行测试

想象一下,您对代码进行了更改,并且立即知道是否破坏了其他功能。这就是在 CI 流水线中进行自动化测试的力量!

持续集成(CI)是指经常将代码更改合并到中央仓库中。自动化测试是这一过程的守护者。

它们可以尽早发现错误,快速提供反馈,并增强您对每次代码更改的信心。

流水线中的测试类型

谈到自动化测试时,通常会提到两种主要类型:单元测试和集成测试。

  • 单元测试:专注于代码中较小且相互隔离的部分,例如单个函数或方法。它们运行速度快,还能精确定位问题。
  • 集成测试:检查系统的不同部分能否正确协同工作,例如检查您的代码与数据库或 API 交互时是否正常。

这两类测试对于确保软件健壮可靠都至关重要。

使用 GitHub Actions 自动运行测试

GitHub Actions 可以充当您的专属测试运行器,每当您推送新代码时自动执行测试。

您需要定义一个工作流,指定运行时机、使用的环境以及要执行的命令。

这样可以确保每次更改都经过一致的验证,无需手动操作。

准备 Java 项目以进行测试

为了演示,我们将使用一个通过 Maven 管理的简单 Java 项目。Maven 是一种流行的构建自动化工具。

Maven 有助于管理项目依赖项,并提供用于编译代码和运行测试的命令。

我们的项目将包含一个简单的 Java 类,以及一个对应的 JUnit 测试(概念上)。

首个可运行的测试示例

下面是一个简单的 Java 类和一个用于检查其功能的基础测试。为简化示例,我们模拟单元测试,而不设置完整的 JUnit 环境。

main 方法充当测试运行器,用于验证 add 方法是否按预期工作。

请尝试运行它,查看输出结果!

public class Calculator {
  // Method to be tested
  public int add(int a, int b) {
    return a + b;
  }

  public static void main(String[] args) {
    Calculator calc = new Calculator();
    // Simulate a test case
    int expected = 5;
    int actual = calc.add(2, 3);

    if (actual == expected) {
      System.out.println("Test Passed: 2 + 3 = " + actual);
    } else {
      System.out.println("Test Failed: Expected " + expected + ", Got " + actual);
    }
  }
}

构建您的测试工作流

现在,我们来看看用于运行测试的 GitHub Actions 工作流文件(.github/workflows/test.yml)应该是什么样子。

此 YAML 文件定义了 GitHub Actions 为设置环境和执行测试命令将要采取的步骤。

在真实项目中,我们将使用 Maven 的 test 命令来运行实际的 JUnit 测试。

name: Java CI with Maven

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up JDK 17
        uses: actions/setup-java@v4
        with:
          java-version: '17'
          distribution: 'temurin'
          cache: maven
      - name: Run Maven Tests
        run: mvn test

了解每个工作流步骤

我们来分解测试工作流中的关键步骤:

  • on: push / pull_request:当代码推送到 main 分支或针对该分支创建拉取请求时触发工作流。
  • runs-on: ubuntu-latest:指定工作流将在其上执行的虚拟机(运行器)的操作系统。
  • actions/checkout@v4:一种预构建操作,用于将仓库中的代码检出到运行器上。
  • actions/setup-java@v4:另一种用于在运行器上设置 Java 开发工具包(JDK)的操作。
  • run: mvn test:这是至关重要的一步!它执行 Maven 命令来编译您的代码并运行所有已定义的测试。

在 CI 中处理测试失败

CI 测试的一项重要优势是能够立即获得反馈。如果任何测试失败,GitHub Actions 工作流作业也会失败。

这清楚地表明,最近的代码更改引入了错误或回归问题。

然后,您可以查看工作流日志,准确定位哪个测试失败以及失败原因,从而帮助您快速修复问题。

影响:质量与信心

将自动化测试集成到 CI 流水线中,是现代软件开发的基石。

这一做法可以主动防止回归问题,确保代码质量保持一致,并显著降低部署有问题功能的风险。

这一过程能够增强您对代码库的信心,让团队可以更快速、更可靠地进行创新。

工作流测试检查

请考虑一个用于运行测试的 GitHub Actions 工作流。在 Java 项目中,run: mvn test 步骤的主要用途是什么?

回顾:CI 流水线中的测试

本课中,我们探索了如何将自动化测试集成到 GitHub Actions CI 流水线中。

我们学习了:

  • 自动化测试对于代码质量的重要性。
  • 如何区分单元测试和集成测试。
  • 如何构建 GitHub Actions 工作流,使用 Maven 运行 Java 测试。
  • 了解 checkout 和 setup-java 等工作流步骤。
  • mvn test 在执行测试中的关键作用。
  • GitHub Actions 如何报告测试失败。

自动化测试对于尽早发现错误和维护健壮的代码库至关重要!

常见问题解答

「使用 GitHub Actions 运行测试」课时是免费的吗?

是的 — 「使用 GitHub Actions 运行测试」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。

「使用 GitHub Actions 运行测试」这节课中我会学到什么?

将自动化单元测试和集成测试接入 CI 流水线,确保代码质量并防止回归问题 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 DevOps Bootcamp 需要有经验吗?

无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「使用 GitHub Actions 运行测试」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 DevOps Bootcamp 课中编写并运行代码吗?

能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 工作流触发器与事件
  2. 使用 GitHub Actions 运行测试
  3. 代码检查与质量检查
  4. 缓存依赖以加快构建
← 返回 DevOps Bootcamp