【问题标题】:Exclude or test Laravel Service Providers while testing with coverage在覆盖测试时排除或测试 Laravel 服务提供者
【发布时间】:2021-09-29 06:17:26
【问题描述】:

我被要求测试一个网站并将代码覆盖率增加到 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% 覆盖?

【问题讨论】:

    标签: laravel phpunit code-coverage


    【解决方案1】:

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

    在提供者数组中取消注释。


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

    【讨论】:

    • 已经禁用了://App\Providers\BroadcastServiceProvider::class,好奇怪
    • 是的 :) 如果您希望 100% 覆盖 - 启用/取消注释。
    • 我知道了,我误会你了,现在一切正常,谢谢
    【解决方案2】:

    附加问题(现在如你所问,Stackoverflow格式不好,先搜索一下)没有得到解答:

    报告目录应该上传到存储库吗?

    没有。

    如果没有,他们如何知道代码是否 100% 覆盖?

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

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

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

    使用提交消息来分享您的理解,因为通常单独的代码更改并不能捕捉到这一点。

    例如如果您提交更改“因为我被告知要 100% 覆盖”,请将其写入提交消息,以便清楚更改的上下文。

    如果这不是工作中的文化,只做一个顶部有单行的提交,这是不言而喻的:“修复测试”。

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

    或回答您的问题:

    如果没有,他们如何知道代码是否 100% 覆盖?

    试错。如果他们抱怨,请在每次提交时在磁盘上 100% 报告并签署您的提交。

    【讨论】:

      猜你喜欢
      • 2016-10-06
      • 2021-11-01
      • 2018-10-20
      • 2014-07-10
      • 1970-01-01
      • 1970-01-01
      • 2013-06-23
      • 2023-01-19
      • 2023-03-16
      相关资源
      最近更新 更多