0

All of my code base is in one folder and it's sub-directories, all of my tests are in another folder and it's sub-directories. When I run PHPUnit, I point it to the test folder, and all Files in my test folder and all it's sub-directories that end in Test.php are executed. This all works fine.

I now want to enable PHP_CodeCoverage for all of my code base, including files for which I don't have test files written yet.

I am able to manually enable PHP_CodeCoverage inside each test file by doing what the GitHub documentation advises:

inside my test file I include the follwoing:

require 'PHP/CodeCoverage/Autoload.php';

$coverage = new PHP_CodeCoverage;
$coverage->start('<name of test>');

// ...

$coverage->stop();

$writer = new PHP_CodeCoverage_Report_Clover;
$writer->process($coverage, '/tmp/clover.xml');

$writer = new PHP_CodeCoverage_Report_HTML;
$writer->process($coverage, '/tmp/code-coverage-report');

How do I enable it for my entire code base? I can't find any documentation for that case.

1 Answer 1

0

I figured it out myself:

When running phpUnit from the command line, add the following switch anywhere before the directory on which you are running phpUnit: --coverage-html /your/coverage/directory/goes/here

Here is an example of the complete command:

$phpunit --colors --coverage-html /your/coverage/directory/goes/here /my/code/base/dir

3
  • 1
    still, if some of the files are not used in any test the coverage will no show them. To make sure you should add addUncoveredFilesFromWhitelist="true" tou your whitelist tag (if you have one) in phpunit.xml Commented May 23, 2013 at 8:37
  • Thanks for the additional information. I had noticed exactly what you mentioned, but just not having to manually call code_coverage in each file was already a huge improvement for my purposes. I haven't been able to get phpunit.xml files to work when I just pass the directory to phpunit, am I missing something there? Commented May 23, 2013 at 17:06
  • usually if the file is named phpunit.xml and is located in the directory from where you call phpunit it will be detected automatically, if not you can pass it to phpunit using -c parameter (phpunit -c /my/path/phpunit.xml) Commented May 23, 2013 at 19:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.