我有一个问题,我无法在谷歌上找到解决方案。当我使用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
一切正常,但也有问题,因为我模拟函数。
如果有人有过这个问题。
1条答案
按热度按时间jm2pwxwz1#
这可能是因为
runTestsInSeparateProcesses
,phpunit为每个测试启动一个新的php进程。似乎它在没有加载xdebug的情况下就可以做到这一点。为每个测试启动的php需要与最初启动phpunit的php相同。也许路径中首先有一个不同的php二进制文件?
如果是这样的话,解决方法就是确保“正确”的php在应用程序中处于第一位
PATH
.