首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在单独的进程中运行测试时,PHPUnit无法生成代码覆盖率

在单独的进程中运行测试时,PHPUnit无法生成代码覆盖率
EN

Stack Overflow用户
提问于 2021-07-27 16:53:00
回答 1查看 74关注 0票数 1

我有一个问题,我在谷歌上找不到解决方案。当我使用PHPUnit和Xdebug运行我的单元测试时,我想做一个代码覆盖。

然而,当我这样做的时候,我得到了这个错误:

代码语言:javascript
复制
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

我意识到这是因为在我的一些测试中,顶部是这样的:

代码语言:javascript
复制
/**
 * @runTestsInSeparateProcesses
 * @preserveGlobalState disabled
 */

当我删除@runTestsInSeparateProcesses时,一切正常,但有问题,因为我模拟函数。

如果有人曾经遇到过这样的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-27 17:30:50

这很可能是因为使用runTestsInSeparateProcesses,PHPUnit会为每个测试启动一个新的PHP进程。它似乎在没有加载Xdebug的情况下做到了这一点。

为每个测试启动的PHP需要与最初启动PHPUnit时使用的PHP相同。也许在路径中有一个不同的PHP二进制文件?

如果是这样的话,解决这个问题的方法就是确保“正确的”PHP放在PATH的第一位。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68541803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档