Quentin Geeraert
Quentin Geeraert

Reputation: 57

xdebug : Fatal error with phpunit for code coverage

I wanna to test my code and coverage. I already install Xdebug extension and when I verify with php -v command, all i'ts good like that :

PHP 7.4.12 (cli) (built: Oct 27 2020 17:18:47) ( ZTS Visual C++ 2017 x64 )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Xdebug v3.0.0RC1, Copyright (c) 2002-2020, by Derick Rethans
    with Zend OPcache v7.4.12, Copyright (c), by Zend Technologies 

However if I run phpunit i have a fatal error :

PHPUnit 7.5.20 by Sebastian Bergmann and contributors.

Fatal error: Uncaught SebastianBergmann\CodeCoverage\RuntimeException: xdebug.coverage_enable=On has to be set in php.ini in C:\Users\quent\Desktop\Github\quentingeeraert-website\bin\.phpunit\phpunit-7.5-0\vendor\phpunit\php-code-coverage\src\Driver\Xdebug.php on line 42

SebastianBergmann\CodeCoverage\RuntimeException: xdebug.coverage_enable=On has to be set in php.ini in C:\Users\quent\Desktop\Github\quentingeeraert-website\bin\.phpunit\phpunit-7.5-0\vendor\phpunit\php-code-coverage\src\Driver\Xdebug.php on line 42

Call Stack:
    0.0005     402112   1. {main}() C:\Users\quent\Desktop\Github\quentingeeraert-website\bin\phpunit:0
    0.0027     477240   2. require('C:\Users\quent\Desktop\Github\quentingeeraert-website\vendor\symfony\phpunit-bridge\bin\simple-phpunit.php') C:\Users\quent\Desktop\Github\quentingeeraert-website\bin\phpunit:13
    0.2824     501760   3. include('C:\Users\quent\Desktop\Github\quentingeeraert-website\bin\.phpunit\phpunit-7.5-0\phpunit') C:\Users\quent\Desktop\Github\quentingeeraert-website\vendor\symfony\phpunit-bridge\bin\simple-phpunit.php:405
    0.2989    1149952   4. PHPUnit\TextUI\Command::main($exit = ???) C:\Users\quent\Desktop\Github\quentingeeraert-website\bin\.phpunit\phpunit-7.5-0\phpunit:22
    0.2989    1150064   5. Symfony\Bridge\PhpUnit\Legacy\CommandForV6->run($argv = [0 => 'bin\\phpunit', 1 => '--colors=always', 2 => '--stop-on-failure'], $exit = TRUE) C:\Users\quent\Desktop\Github\quentingeeraert-website\bin\.phpunit\phpunit-7.5-0\src\TextUI\Command.php:162

I already add xdebug.coverage_enable = On in my php.ini file so I don't understand why the system say that :/

Maybe someone can help me ? Thank you a lot for help me !

Upvotes: 3

Views: 7163

Answers (1)

LazyOne
LazyOne

Reputation: 165188

I already add xdebug.coverage_enable = On in my php.ini file so I don't understand why the system say that :/

Xdebug v3.0.0RC1
PHPUnit 7.5.20

Either upgrade PHPUnit to the version that knows about Xdebug 3 ... or downgrade Xdebug to 2.x (2.9.8 is the latest).


Thing is: xdebug.coverage_enable is the Xdebug 2 option. That option does nothing in Xdebug 3 where you should use xdebug.mode = coverage instead.

Xdebug 3 uses different config options than v2 and your version of PHPUnit is simply not aware of that. Xdebug 3 will simply report an empty value/0 for no-longer-used Xdebug 2 options.

https://3.xdebug.org/docs/upgrade_guide#Changed-Configuration-Settings

P.S. You should see a warning when you run php -i with Xdebug 3 -- it should complain if such a wrong/outdated option is present in your php.ini (unless you have configured PHP to not to report any startup errors I guess).

In either case: run php -i and see the actual live values from Xdebug section: what value that option has.

Upvotes: 3

Related Questions