You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel中并行运行测试并排除指定测试?

解决Laravel测试中--parallel与--exclude组合报错的问题

问题原因

当启用--parallel参数时,Laravel会切换到专门的并行测试运行器(ParallelTestingRunner),这个运行器的参数集和普通测试运行器并不完全一致——它没有注册--exclude选项,所以组合使用两个参数时,系统会提示该选项不存在。而单独使用--exclude时,用的是默认测试运行器,因此能正常识别参数。

解决方案

方案1:通过环境变量跳过指定组测试

在标注了@group someGroup的测试类/方法中,添加条件判断跳过测试:

<?php

namespace Tests\Feature;

use Tests\TestCase;

class ExampleTest extends TestCase
{
    /**
     * @group someGroup
     */
    public function test_example()
    {
        if (env('SKIP_SOME_GROUP')) {
            $this->markTestSkipped('Skipping someGroup tests in parallel mode');
        }

        // 你的测试逻辑
        $response = $this->get('/');
        $response->assertStatus(200);
    }
}

运行并行测试时,通过环境变量触发跳过:

SKIP_SOME_GROUP=true php artisan test --parallel

方案2:生成排除指定组的测试套件后并行运行

先运行普通测试命令,添加--no-execution参数生成包含排除规则的测试套件配置文件:

php artisan test --exclude someGroup --no-execution --configuration phpunit-excluded.xml

再用并行测试命令加载这个自定义配置文件:

php artisan test --parallel --configuration phpunit-excluded.xml

方案3:自定义并行测试命令(进阶)

如果需要频繁使用这个组合,可以创建自定义Artisan命令,整合并行测试和排除组的逻辑:

  1. 生成自定义命令:php artisan make:command ParallelTestExcludeGroup
  2. 在命令类中调用Laravel并行测试逻辑,同时处理--exclude参数,手动过滤指定组的测试文件。
    该方案需要对Laravel测试底层有一定了解,适合有定制需求的场景。

内容的提问来源于stack exchange,提问作者online Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 05:20:27