【发布时间】:2018-06-15 13:59:30
【问题描述】:
我真的不知道发生了什么——这一切都始于尝试运行测试覆盖率报告时出现Error: No code coverage driver is available 的 PHPUnit 错误,并以我调试到下面描述的可复制集而结束。但要设置舞台 - 我正在使用 Laravel 5.5、Xdebug 2.5.5、PHPUnit 6.5.5。我的测试代码说明了这个问题:
<?php
use Tests\TestCase;
class A extends TestCase
{
public function testA()
{
echo( get_cfg_var('cfg_file_path')); exit;
}
}
输出C:\Users\xxx\AppData\Local\Temp\7598.tmp
将其与输出正确 php.ini 路径的代码进行比较:
<?php
use PHPUnit\Framework\TestCase;
class A extends TestCase
{
public function testA()
{
echo( get_cfg_var('cfg_file_path')); exit;
}
}
输出:C:\server\php\php.ini
怎么可能?加载的 php.ini 文件如何根据执行的代码进行更改?更好的是 - 如何加载我正确的 php.ini 文件(启用了 xdebug),而不是这个冒名顶替者?
在这两种情况下,测试都是使用phpunit tests\unit\a启动的
文件夹结构为:
Laravel Project
└───tests
└───Unit
└───A.php
【问题讨论】:
-
您究竟是如何启动测试的? 测试框架通常可以使用自定义
php.ini文件,有些默认情况下会这样做。 PHP 解释器allows it。这可能是这里发生的事情吗? -
在这两种情况下,我都使用
phpunit命令启动它。据我了解,如果要加载自定义 php.ini,两种情况都会加载 -
那么这里唯一的区别是
use语句中的类路径不同? -
是的!___________
-
那么,在那种情况下,
Tests\TestCase究竟扩展了什么?层次结构是否回到PHPUnit\Framework\TestCase?
标签: php phpunit xdebug laravel-5.5