Why won't PHPUnit code coverage report functions that aren't called?

萝らか妹 提交于 2019-12-01 10:05:40

问题


I'm trying to get code coverage on one of my projects, but functions and classes that aren't called don't factor into the coverage calculations. It's hard to see what isn't covered yet (lots) when large chunks of code are ignored.

In the image below, I would expect the bodies of the first three functions to be highlighted red. Lines that aren't executed in functions that do get executed show up red, at least.

For what it's worth, I'm running Debian Testing with PHP 7.0.12-1 and XDebug 2.4.1-1 as installed by apt and using PHPUnit 4.8.27 as installed by Composer.


回答1:


Code coverage reports should include all code in their calculations, not just stuff that is coloured. Are you sure the non-highlighted code is being excluded? Non-highlighted code is just code that has no tests, red highlights are for bits of code inside methods that have tested code but haven't been tested (like a conditional statement where you only tested one side of the condition)




回答2:


This appears to be an ongoing bug with XDebug and PHP 7.0, as covered in this issue: https://github.com/sebastianbergmann/php-code-coverage/issues/411 So, it should be working as I expect and there's nothing incorrect about my setup. Guess I'll just have to wait until the underlying cause (in XDebug) is found and fixed. Until then, the thread notes that turning on process isolation is a work-around.



来源:https://stackoverflow.com/questions/40183931/why-wont-phpunit-code-coverage-report-functions-that-arent-called

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!