julianseeger / php-real-coverage
基于现有的php-code-coverage报告计算实际覆盖率
dev-master
2014-03-13 13:14 UTC
This package is not auto-updated.
Last update: 2024-09-28 13:09:21 UTC
README
什么是“实际”覆盖率?
假设你有一个简单的类
class SomeClass { public function someFunction() { $instance = "important message"; // this line is important $a = "This code"; $b = "is completely"; $c = "usesless"; $instance .= "!!!"; // this one is important too if (true) { $f = "and has"; $g = "100% coverage"; } $c .= "!"; return $instance; // and this one is important } }
并为这个类编写了一个相当无用的测试,大多数行为未经过测试
class SomeClassTest extends \PHPUnit_Framework_TestCase { public function testThisTestIsStupid() { $sut = new SomeClass(); $instance = $sut->someFunction(); $this->assertEquals("important message!!!", $instance); } }
但无论如何,这个测试为这个类产生了100%的覆盖率
当你在这个项目上运行 php-real-coverage 时
那么你就会知道,哪些行实际上是经过测试的
在这个例子中,只有第8行、第12行和第18行是必须的,才能使测试通过。
快速入门
将其添加到你的composer.json文件中
"require-dev": {
"julianseeger/php-real-coverage": "*"
}
使用phpunit生成覆盖率报告
./vendor/bin/phpunit --coverage-php coverage.php
然后让php-real-coverage测试你覆盖率的质量
./vendor/bin/php-real-coverage coverage.php
0.1-Beta版本路线图
- 添加代理自动加载器
- 处理非composer自动加载器(包装现有的自动加载器)
- 在多态代理中保持原始方法签名(严格支持)
- 允许非命名空间类
- 支持魔法方法
- 重写RealCoverageRun的原型(“主”方法)
- 向phpunit传递适当的参数
- 支持引导(类似于phpunit中的"--bootstrap")
1.0版本路线图
- 集成symfony/console
- 仅运行覆盖修改行的测试(大大提高速度)
- 将钩子添加到主算法中,以允许监听器/打印器等
- 支持所有默认的phpunit覆盖率编写器(html,文本,clover,php)
- 审查和重构架构
限制
- 仅与phpunit一起使用
期待扩展到其他框架,前提是有受众
- 不支持phpunit 4
一旦phpunit 4稳定,我将同时集成对phpunit 3和4的支持
-
你可能在你项目中滥用反射或动态加载时遇到问题,因此php-real-coverage可能不会为doctrine等使用
-
不支持hhvm
我目前缺乏任何hhvm的经验,但看起来它支持phpunit,所以我期待着改变这一点。
贡献
执行测试
composer install --prefer-dist --dev
./vendor/bin/phpunit
确保你的更改经过测试并且符合PSR-2
再次执行测试
并提交你的Pull Request
PS:如果测试覆盖率低于100%,构建将失败