2012-04-16 29 views
22

'un çeşitli yürütmelerinden toplu kod kapsamı Bir süredir PHPUnit ile çalışıyorum ve testlerimi phpunit'un ayrı yürütmeleri olarak çalıştırılacak gruplara ayırmam gerekebilir gibi görünmeye başlıyor. Bunun başlıca nedeni, testlerimin çoğunun ayrı işlemlerde çalıştırılması gerektiğidir. Bazıları ise, aslında here belgelenmiş bir sorun nedeniyle ayrı işlemlerde çalıştırılamaz. Yapmak istediğim, her biri farklı ayarlarla farklı testler yürütmek üzere yapılandırılmış olan phpunit'un birkaç çalışmasını iptal eden bir bash komut dosyası yazmaktır.PHPUnit

Bu yüzden sorum şu: Birden çok phpunit uygulamasının kod kapsamı sonuçlarını bir araya getirmenin bir yolu var mı? Bunu doğrudan PHPUnit'in kendisi veya başka bir araç kullanarak yapabilir miyim? PHPUnit'in test paketi konseptini kullanarak bir tek phpunit çalışmasından aradığım şeyi elde etmek mümkün mü?

+0

https://github.com/sebastianbergmann/phpunit/issues/254 hakkındaki son yorumu gördünüz mü? – vimdude

+0

@abdelsaid: Bu son yoruma baktım ve bu soruyla nasıl alakalı olduğunu benden başka. –

cevap

21

sonra böyle, PHP_CodeCoverage::merge kullanarak bunları birleştirmek, bir tefrika PHP_CodeCoverage nesne olarak kapsama veri yazma almak için PHPUnit için "--coverage-php" seçeneğini kullanın:

<?php 
/** 
* Deserializes PHP_CodeCoverage objects from the files passed on the command line, 
* combines them into a single coverage object and creates an HTML report of the 
* combined coverage. 
*/ 

if ($argc <= 2) { 
    die("Usage: php generate-coverage-report.php cov-file1 cov-file2 ..."); 
} 

// Init the Composer autoloader 
require realpath(dirname(__FILE__)) . '/../vendor/autoload.php'; 

foreach (array_slice($argv, 1) as $filename) { 
    // See PHP_CodeCoverage_Report_PHP::process 
    // @var PHP_CodeCoverage 
    $cov = unserialize(file_get_contents($filename)); 
    if (isset($codeCoverage)) { 
    $codeCoverage->filter()->addFilesToWhitelist($cov->filter()->getWhitelist()); 
    $codeCoverage->merge($cov); 
    } else { 
    $codeCoverage = $cov; 
    } 
} 

print "\nGenerating code coverage report in HTML format ..."; 

// Based on PHPUnit_TextUI_TestRunner::doRun 
$writer = new PHP_CodeCoverage_Report_HTML(
    'UTF-8', 
    false, // 'reportHighlight' 
    35, // 'reportLowUpperBound' 
    70, // 'reportHighLowerBound' 
    sprintf(
    ' and <a href="http://phpunit.de/">PHPUnit %s</a>', 
    PHPUnit_Runner_Version::id() 
    ) 
); 

$writer->process($codeCoverage, 'coverage'); 

print " done\n"; 
print "See coverage/index.html\n"; 

Ayrıca birleştirme mümkün olabilir phpcov adındaki bir aracı kullanarak dosyaları burada açıklandığı gibi: https://github.com/sebastianbergmann/phpunit/pull/685

+0

Bunu denedim, ancak şu hata iletilerini alıyorum: – Phoenix

+0

(!) Önemli hata: 'RuntimeException' iletisini içeren '' /arroyo/www/htdocs/code_coverage_report/index.dashboard.html '' adresine yazamadı. /arroyo/www/htdocs/cdsm/tests/library/PHPUnit/Text/Template.‌ php on line 150 (!) RuntimeException: /arroyo/www/htdocs/code_coverage_report/index.dashboard.html‌ dosyasına yazılamadı . /arroyo/www/htdocs/cdsm/tests/library/PHPUnit/Text/Template.‌ satırında 150 – Phoenix