在测试覆盖率时排除或测试 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% 报告并签署您的提交。
我被要求测试一个网站并将代码覆盖率添加到 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% 报告并签署您的提交。