在测试覆盖率时排除或测试 Laravel 个服务提供商

Exclude or test Laravel Service Providers while testing with coverage

我被要求测试一个网站并将代码覆盖率添加到 100%,我从来没有这样做过,我知道如何使用 TDD 使用 phpunit 测试 laravel,在那种情况下一切正常。然后我安装了 xdebug 以允许代码覆盖
./vendor/bin/phpunit --coverage-html reports/

我的报告几乎达到 100%,但报告显示 BroadcastServiceProvider.php 没有经过测试,但我没有使用该提供商的任何东西,我没有不知道将来我是否会使用它。我试过这个:

<?php

namespace App\Providers;

use Illuminate\Support\Facades\Broadcast;
use Illuminate\Support\ServiceProvider;

class BroadcastServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        //Broadcast::routes();

        //require base_path('routes/channels.php');
    }
}

但报告仍然显示该文件是 0.0% 的测试覆盖率,我如何才能将其排除在外?


附加问题:reports 目录应该上传到存储库?如果没有,他们怎么知道代码是否 100% 覆盖?

检查 config/app.php - BroadcastServiceProvider 默认是禁用的 - 当然没有测试

在 providers 数组中取消注释。


顺便说一句,100% 的覆盖率 <> 完美测试的应用程序

附加问题(现在如你所问,Whosebug格式不好,先搜索一下)还没有回答:

the reports directory should be uploaded to the repository?

没有

if doesn't, how are they going to know if the code is 100% cover?

通过 运行 测试套件并收集测试覆盖率 - 就像您一样。

这通常是通过构建服务器(CI 作业运行器,Github 操作,但它被调用)并为每次提交捕获不同的指标(包括覆盖率数据)。

然后您可以预览存储库中每个更改的指标更改,准备您的更改和文件 完成 更改作为单个提交(更改集),通常称为 原子提交.

使用提交消息来分享您的理解,因为通常仅靠代码更改并不能体现这一点。

例如如果您提交更改“为了 100% 的覆盖率,因为有人告诉我”,请将其写入提交消息,以便更改的上下文清晰。

如果这不是工作文化,请只在顶部使用单行提交,如:“修复测试”。

别被愚弄了:工作中的文化就是你老板的生活。大多数经理都是反社会人士,如果您因为工作需要在 Whosebug 上提问,请在专业交流中闭嘴。你 say/write 越少越好。

或回答您的问题:

if doesn't, how are they going to know if the code is 100% cover?

试错。以防他们抱怨,每次提交都在磁盘上 100% 报告并签署您的提交。