我正在处理我的宠物项目Pipes并尝试尽可能接近100%的代码覆盖率(我正在使用Coveralls)。
我面临的问题是:如何使用不同的PHP版本获得100%的代码覆盖率?截至目前,我的项目不包含特定于版本的代码,但很快就会发生变化。
我希望获得PHP 5.4的100%代码覆盖率,即使在针对5.4进行测试时也不会执行生成器相关代码。
任何人都可以就如何保持我的承保统计数据负责提供策略或建议吗?
这是我的.travis.yml
:
language: php
php:
- 5.6
- 5.5
- 5.4
- hhvm
install:
- composer require satooshi/php-coveralls:~0.6@stable
before_script:
- curl -s http://getcomposer.org/installer | php
- php composer.phar install --dev
- mkdir -p build/logs
script:
- phpunit --coverage-clover build/logs/clover.xml
after_success:
- sh -c 'if [ "$TRAVIS_PHP_VERSION" != "hhvm" ]; then php vendor/bin/coveralls -v; fi;'
这是我的phpunit.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false"
stopOnError="false"
stopOnIncomplete="false"
stopOnSkipped="false"
syntaxCheck="false"
bootstrap="vendor/autoload.php">
<testsuites>
<testsuite name="Application Test Suite">
<directory>./tests/</directory>
</testsuite>
</testsuites>
<!-- Add a filter to make sure we don't count venders and Tests in the coverage report -->
<filter>
<whitelist>
<directory suffix="Test.php">./src</directory>
<exclude>
<directory>./docs</directory>
<directory>./vendor</directory>
<directory>./tests</directory>
</exclude>
</whitelist>
</filter>
</phpunit>
PS:我知道代码覆盖率不是银弹。
答案 0 :(得分:0)
使用另一个例子found
,我发现@requires会对代码覆盖率产生负面影响。例如:
<?php
require_once('class.php');
class FooTest extends PHPUnit_Framework_TestCase {
/**
* @requires PHP 5.5
* @covers Foo::greater
*/
public function testGreater() {
$x = new Foo();
$this->assertSame(2, $x->greater());
}
public function testLesser() {
$x = new Foo();
$this->assertSame(1, $x->lesser());
}
}
<?php
class Foo {
public function greater() {
return 2;
}
public function lesser() {
return 1;
}
}
在我看来,@ covers应强制代码覆盖以标记greater
方法。但是,它没有: