热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何多次运行php单元并连接覆盖率报告?

如何解决《如何多次运行php单元并连接覆盖率报告?》经验,为你挑选了1个好方法。

我测试的代码充满了最终的静态类.虽然我们无法重构它以进行更好的测试,但我有一个中间解决方案,可以对它自己的流程进行几次小测试.一切正常.但我没有覆盖另一个覆盖报告.

我目前正在三叶草中生成报告,但我对其他报告非常开放.

我的测试只在phpunit运行时才有效:

/home/y/bin/phpunit --coverage-html clover --coverage-clover clover/report.xml --include-path src/  tests/aTest.php
OK (1 test, 1 assertions)
/home/y/bin/phpunit --coverage-html clover --coverage-clover clover/report.xml --include-path src/  tests/bTest.php
OK (1 test, 1 assertions)
/home/y/bin/phpunit --coverage-html clover --coverage-clover clover/report.xml --include-path src/  tests/cTest.php
OK (1 test, 1 assertions)

但这将导致每次运行都会从之前的报告中删除.所以我只收到最后一份报告.如果我尝试运行它们,因为phpunit期望生成完整的报告,我有失败因为我的所有类都包含自己的静态类.

/home/y/bin/phpunit --coverage-html clover --coverage-clover clover/report.xml --include-path src/  tests/
. (first test pass)
PHP Fatal error:  Cannot redeclare class Something
make[1]: *** [phpunit_run] Error 255

(但上面的内容将失败,--process-isolation --no-globals-backup因为它们并不完全是它们的意思......) - 这还不是关于如何在php单元上正确处理隔离的另一个问题.我很好地运行了几次,我只想要一份完整的报道:)

有没有办法让测试正确运行(即在几个过程中避免污染的全局类声明空间),如第一个代码块,但仍然有全面的代码覆盖率报告?

谢谢!



1> haffla..:

施莱斯的回答对我不起作用.unserialize()方法在我的情况下抛出一个错误:偏移错误...

但是有一种非常简单的方法可以实现这一目标:

按照此处的说明下载phpcov .

让phpunit生成php覆盖率报告:

phpunit --coverage-php coverage/cov/foo.cov tests/foo
phpunit --coverage-php coverage/cov/bar.cov tests/bar

现在你有2个.cov文件.然后在你最喜欢的shell中:

phpcov merge --clover clover.xml /coverage/cov

它将生成一个clover.xml报告文件.


推荐阅读
author-avatar
大美妞庄严典雅__
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有