2012-02-27 36 views
3

我正在努力设置代码覆盖率。 我必须做什么,我如何设置这个,所以我可以得到一个覆盖地图/报告?如何配置詹金斯的PHP覆盖率报告?

我有一个运行的单元测试。我必须检查哪些复选框:生成后操作? 我必须安装一个插件吗?单元测试是在PHP 5.3.2和我在运行脚本cibuild symfony的1.4.5

我运行:

php "test/unit/RbcTest.php" 

这里实际的测试代码:

<?php 
    require_once dirname(__FILE__).'/../bootstrap/unit.php'; 
    require_once 'PHP/CodeCoverage/Autoload.php'; 
    set_include_path ('phoenix/lib/'); 
    $coverage = new PHP_CodeCoverage; 
    $coverage->start('strtolowerTest.php'); 
    $coverage->stop(); 
    $writer = new PHP_CodeCoverage_Report_Clover; 
    $writer->process($coverage, 'phoenix/test/clover.xml'); 
    $writer = new PHP_CodeCoverage_Report_HTML; 
    $writer->process($coverage, 'phoenix/test/code-coverage-report'); 
?> 

<?php //strtolowerTest.php 
echo "1. for strlower"; 
require_once 'phoenix/lib/vendor/symfony/lib/vendor/lime/lime.php'; 
echo "2. for strlower"; 
require_once 'phoenix/lib/validator/myValidatorString.class.php'; 
echo "3. for strlower"; 
require_once 'phoenix/lib/vendor/symfony/lib/validator/sfValidatorString.class.php'; 
$t = new lime_test(2, new lime_output_color()); 
$t->is(myValidatorString::doCleanEmail('blabla-32.mtmail..com'), '[email protected]'); 
$t->is(myValidatorString::doClean('@#*+??%^!~blabla-===32.mtmail..com'), '[email protected]'); 
$t->is(myValidatorString::slugify('sensio labs'), 'sensio-labs'); 
$t->is(myValidatorString::slugify('paris,france'), 'paris-france'); 
$t->is(myValidatorString::slugify(' sensio'), 'sensio'); 
$t->is(myValidatorString::slugify('sensio '), 'sensio'); 
$t->is(myValidatorString::slugify(''), 'n-a', '::slugify() converts the empty string to n-a'); 
$t->is(myValidatorString::slugify(' - '), 'n-a', '::slugify() converts a string that only contains non-ASCII characters to n-a'); 

$t->diag('hello world'); 
$t->ok(true, 'test something'); 
?> 

请帮助 感谢

以下是输出,当我在詹金斯查看控制台编译:

PHPUnit 3.6.10 by Sebastian Bergmann. 

Class test/phpunit/unit/RbcTest could not be found in /var/lib/jenkins/workspace/b32b733b59ba6be9884da7427bee5c95/phoenix/test/phpunit/unit/RbcTest.php.Publishing Clover coverage report... 
Publishing Clover HTML report... 
Publishing Clover XML report... 
Publishing Clover coverage results... 
Code coverage enforcement failed for the following metrics: 
    Methods 
    Conditionals 
Setting Build to unstable. 
Build step 'Publish Clover Coverage Report' changed build result to UNSTABLE 
Publishing Clover coverage report... 
Publishing Clover XML report... 
Publishing Clover coverage results... 
Code coverage enforcement failed for the following metrics: 
    Methods 
Setting Build to unstable. 
[ci-game] evaluating rule: Build result 
[ci-game] evaluating rule: Increased number of failed tests 
[ci-game] evaluating rule: Increased number of passed tests 
[ci-game] evaluating rule: Decreased number of failed tests 
[ci-game] evaluating rule: Decreased number of passed tests 
[ci-game] evaluating rule: PMD violation 
[ci-game] evaluating rule: pylint violation 
[ci-game] evaluating rule: CPD violation 
[ci-game] evaluating rule: Checkstyle violation 
[ci-game] evaluating rule: FindBugs violation 
[ci-game] evaluating rule: FXCop violation 
[ci-game] evaluating rule: Simian violation 
[ci-game] evaluating rule: StyleCop violation 
[ci-game] evaluating rule: HIGH priority PMD warnings 
[ci-game] evaluating rule: NORMAL priority PMD warnings 
[ci-game] evaluating rule: LOW priority PMD warnings 
[ci-game] evaluating rule: Changed number of compiler warnings 
[ci-game] evaluating rule: Changed number of checkstyle warnings 
Finished: UNSTABLE 



<?php 
class myValidatorString extends sfValidatorString 
{ 
    static public function slugify($text) 
    { 
     echo "in myvalidatorstring for class sfValidatorString.class.php"; 
     // replace all non letters or digits by - 
     $text = preg_replace('/\W+/', '-', $text); 

     // trim and lowercase 
     $text = strtolower(trim($text, '-')); 

     if (empty($text)) 
     { 
     return 'n-a'; 
     } 
     return $text; 
    } 
} 

感谢

回答

5

PHP本身并不生成代码覆盖率信息。 Xdebug扩展将收集哪些行在脚本运行时执行,但不会创建报告。您应该使用PHPUnitPHP_CodeCoverage来运行您的测试并输出Jenkins可以提供的报告。

使用pecl为其他两个安装Xdebug和pear。你也应该看看Template for Jenkins Jobs for PHP Projects

+0

谢谢你,安装了PHP_CodeCoverage。我该从哪里出发?下一步让我的詹金斯出示代码覆盖率报告?谢谢 – 2012-02-27 11:39:37

+0

安装PHPUnit并按照[docs](www.phpunit.de)设置CC。你需要为它编写你的单元测试,或者你可以尝试在没有它的情况下使用CC。虽然我没有那样做。 – 2012-02-27 17:07:03

+0

谢谢我有单元测试并安装了PHPUnit。我配置jenkins生成clover.xml,但无论我如何定义路径,它都会给出错误!请参阅主文章中的错误消息 – 2012-02-29 11:04:07

0

对于PHP,你可以使用Clover PHP plugin。安装该插件后,您将拥有额外的作业配置选项来设置所有内容(请参阅插件的说明)。

+0

我跑了wget http://myhost.net:12343/jnlpJars/jenkins-cli.jar并且现在有文件。接下来我做:java -jar jenkins-cli.jar -s http://myhost.net:1234 install-plugin cloverphp并得到:无效或损坏的jarfile jenkins-cli.jar ???请求帮助?谢谢! – 2012-02-27 09:12:21

+1

您可以通过Web界面安装插件。只需去管理詹金斯 - >管理插件。 – 2012-02-27 15:35:46