我有一个问题,我在谷歌上找不到解决方案。当我使用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时,一切正常,但有问题,因为我模拟函数。
如果有人曾经遇到过这样的问题。
发布于 2021-07-27 17:30:50
这很可能是因为使用runTestsInSeparateProcesses,PHPUnit会为每个测试启动一个新的PHP进程。它似乎在没有加载Xdebug的情况下做到了这一点。
为每个测试启动的PHP需要与最初启动PHPUnit时使用的PHP相同。也许在路径中有一个不同的PHP二进制文件?
如果是这样的话,解决这个问题的方法就是确保“正确的”PHP放在PATH的第一位。
https://stackoverflow.com/questions/68541803
复制相似问题