dave-liddament/test-splitter

将 PHPUnit 测试分割成多个部分,以便可以并行运行(例如在 GitHub Actions 上)

0.1.1 2021-09-28 18:30 UTC

This package is auto-updated.

Last update: 2024-08-29 01:54:28 UTC


README

如果你的测试套件运行缓慢,现有的测试并行化工具(例如 paratest)不适合你,因为你需要独立的数据库实例呢?

如果是这样,PHPUnit 测试用例分割器可能有所帮助。它以确定性的方式将测试分割成批次。每个测试批次都可以在独立的实例中运行(例如,通过在 GitHub Actions 中使用矩阵)。

用法

要使用,请安装

composer require --dev dave-liddament/test-splitter

测试分割器(tsplit)需要两个参数:批次和批次数。测试列表通过 stdin 传入。

要将测试分割成 4 个批次并运行第一个批次,你可以这样做

vendor/bin/phpunit --filter `vendor/bin/phpunit --list-tests | vendor/bin/tsplit 1 4`

要运行第二个批次,你可以这样做

vendor/bin/phpunit --filter `vendor/bin/phpunit --list-tests | vendor/bin/tsplit 2 4`

GitHub Actions

将此添加到你的 GitHub Actions 中

jobs:
  tests:
  
    strategy:
      fail-fast: false
      matrix: 
        test-batch: [1, 2, 3, 4]

    steps: 
      # Steps to checkout code, setup environment, etc

      - name: "Tests batch ${{ matrix.test--batch }}"
        run: vendor/bin/phpunit --filter `vendor/bin/phpunit --list-tests | vendor/bin/tsplit ${{ matrix.test-batch }} 4`

这将把测试分割成 4 个不同的作业。