Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

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.

share|improve this question
add comment

1 Answer

up vote 0 down vote accepted

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

share|improve this answer
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 –  robertboloc May 23 '13 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? –  DudeOnRock May 23 '13 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) –  robertboloc May 23 '13 at 19:12
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.