运行 在单独的进程中测试时,PHPUnit 无法生成代码覆盖率
PHPUnit can't generate code coverage when running tests in separate processes
我有一个问题,我无法在 Google 上找到解决方案。
当我 运行 使用 PHPUnit 和 Xdebug 进行单元测试时,我想进行代码覆盖。
但是,当我这样做时,出现了这个错误:
PHPUnit\Framework\Exception: Fatal error: Uncaught SebastianBergmann\CodeCoverage\NoCodeCoverageDriverAvailableException: No code coverage driver available in /Users/theobenoit/Desktop/Antipode.nosync/Sites/wp-framework-core/vendor/phpunit/php-code-coverage/src/Driver/Selector.php:53
├ Stack trace:
├ #0 Standard input code(43): SebastianBergmann\CodeCoverage\Driver\Selector->forLineCoverage(Object(SebastianBergmann\CodeCoverage\Filter))
├ #1 Standard input code(123): __phpunit_run_isolated_test()
├ #2 {main}
├ thrown in /Users/theobenoit/Desktop/Antipode.nosync/Sites/wp-framework-core/vendor/phpunit/php-code-coverage/src/Driver/Selector.php on line 53
我意识到这是因为在我的一些测试中顶部有这个:
/**
* @runTestsInSeparateProcesses
* @preserveGlobalState disabled
*/
当我删除 @runTestsInSeparateProcesses
时,一切正常,但由于我模拟函数而出现问题。
如果有人遇到过这个问题。
这可能是因为 runTestsInSeparateProcesses
,PHPUnit 会为每个测试启动一个新的 PHP 过程。而且它似乎在没有加载 Xdebug 的情况下做到了这一点。
为每个测试启动的 PHP 需要与您最初启动 PHP 单元的相同。也许 PATH 中首先有一个不同的 PHP 二进制文件?
如果是这种情况,解决方法是确保“正确的”PHP在PATH
中排在第一位。
我可以通过在没有映射时禁用强制中断来解决同样的问题,这是 xdebug-settings 下的 IDE 中的设置。
我有一个问题,我无法在 Google 上找到解决方案。 当我 运行 使用 PHPUnit 和 Xdebug 进行单元测试时,我想进行代码覆盖。
但是,当我这样做时,出现了这个错误:
PHPUnit\Framework\Exception: Fatal error: Uncaught SebastianBergmann\CodeCoverage\NoCodeCoverageDriverAvailableException: No code coverage driver available in /Users/theobenoit/Desktop/Antipode.nosync/Sites/wp-framework-core/vendor/phpunit/php-code-coverage/src/Driver/Selector.php:53
├ Stack trace:
├ #0 Standard input code(43): SebastianBergmann\CodeCoverage\Driver\Selector->forLineCoverage(Object(SebastianBergmann\CodeCoverage\Filter))
├ #1 Standard input code(123): __phpunit_run_isolated_test()
├ #2 {main}
├ thrown in /Users/theobenoit/Desktop/Antipode.nosync/Sites/wp-framework-core/vendor/phpunit/php-code-coverage/src/Driver/Selector.php on line 53
我意识到这是因为在我的一些测试中顶部有这个:
/**
* @runTestsInSeparateProcesses
* @preserveGlobalState disabled
*/
当我删除 @runTestsInSeparateProcesses
时,一切正常,但由于我模拟函数而出现问题。
如果有人遇到过这个问题。
这可能是因为 runTestsInSeparateProcesses
,PHPUnit 会为每个测试启动一个新的 PHP 过程。而且它似乎在没有加载 Xdebug 的情况下做到了这一点。
为每个测试启动的 PHP 需要与您最初启动 PHP 单元的相同。也许 PATH 中首先有一个不同的 PHP 二进制文件?
如果是这种情况,解决方法是确保“正确的”PHP在PATH
中排在第一位。
我可以通过在没有映射时禁用强制中断来解决同样的问题,这是 xdebug-settings 下的 IDE 中的设置。