提问人:Pekka 提问时间:3/11/2010 更新时间:7/31/2019 访问量:27029
PHPUnit 测试的“Web 界面”?
"Web interface" to PHPUnit tests?
问:
是否有一个简单的“Web 界面”来运行 PHPUnit 测试套件?即在命令行上运行测试的 PHP 脚本,并输出格式良好的 HTML 结果。
我开发 Web 应用程序,日常工作流程通常在 IDE 和浏览器之间切换。我希望在同一环境中进行单元测试。
我正在寻找一些非常简单且基于 PHP 的东西 - 我计划进入 phpUnderControl(它具有我正在寻找的功能),但还没有。
答:
您可以使用 phing 运行 PHPUnitTask,然后将输出转换为:
- PHPUnitReport - 此任务使用 XSLT 将 PHPUnit xml 报告转换为 HTML。
例:
<phpunitreport infile="reports/testsuites.xml"
format="frames"
todir="reports/tests"
styledir="/home/phing/etc"/>
请参阅各种输出格式。phpunit --help
PHPUnit 的 2.3 版本有一章是关于这一点的,但它现在已经消失了一段时间。您也许可以在某处找到 Google 的旧副本。
既然你提到这是针对phpUnderControl的:如果你对此没有固定,请考虑使用Jenkins和 http://jenkins-php.org。
顺便说一句:除非我们谈论的是 CI 服务器,否则我认识的大多数人都不会通过 Web 界面使用 PHPUnit。它们要么只使用命令行,要么使用它们的 IDE 集成。
评论
我从未见过这样的网络界面......但是,正如您所说,您总是使用IDE和Web浏览器,为什么不换一种方式思考呢?
即一个可能的解决方案是从你的IDE启动单元测试;-)
这意味着您应该能够单击失败的测试以“跳转到”测试方法或导致测试失败的原因。
在 PHP + PHPUnit 的世界里,我知道 Zend Studio 是这样做的——是的,它不是免费的,不幸的是;-(
使用 Eclipse PDT,解决方案是将 PHPUnit 注册为外部工具(请参阅或实例此博客文章:将 PHPUnit 与 Eclipse PDT 一起使用)——但它并不性感,您不能单击结果来跳转方法/测试......
另一个解决方案是开发一个插件来将 PHPUnit 集成到 Eclipse PDT 中(我想就像为 Zend Studio 所做的那样)——前段时间创建了一个 phpunit4eclipse,但这只是一个开始,并没有取得太大的成功,所以作者在发布后没有做任何工作......
评论
我发现了这一点:
我偶然发现了 Parth Patil 的一篇文章,他的解决方案是从 PHPUnit 创建一个 xml 报告,然后使用这个 xml 创建你自己的报告。
我使用了他的解决方案,使其与 PHPUnit 3.4 兼容,并且还添加了一些 Reflection 以在报告中查看我的测试用例文档注释。(注意:对于 refelection,我使用 Zend_Framework 反射类)
好的,你说你更喜欢一个独立的IDE解决方案,但你知道最近有一个插件,可以简单地在Eclipse中执行PHPUnit,并且有一个很好的表示(就像在Zend Studio中一样,但免费)。
这是链接,如果您有问题,主要开发人员也会快速回复电子邮件:
我亲自测试了一些 Web 界面,但我总是被欺骗(不是真正实用和稳定)。但这是你的选择。
评论
您始终可以使用 Maven for PHP,从中可以使用 surefire 报告(mvn 站点)。 更多信息请见: http://www.php-maven.org
我感受到你的挫败感——我自己就是一个 UI 人。看终端太久让我头晕目眩。我写了一个简短的应用程序,您可能会觉得很有帮助。
(来源:mattmueller.me)
你可以在这里找到它: http://mattmueller.me/blog/introducing-phpunit-test-report
干杯! 马 特
评论
经过最近几个小时的研究,我遇到的最好的 PHPUnit Web 前端是 https://github.com/NSinopoli/VisualPHPUnit
您可以使用 Jenkins 运行任何类型的任务,包括 PHPUnit 测试。它可以自动检出您的应用程序、运行测试、构建 HTML 报告,甚至可以在构建失败时向您发送电子邮件。
以下是设置 Jenkins 所需的模板,以便从您的项目中构建一堆有趣的报告和统计数据。
我最近发现了Visual PHPUnit,对于不想从命令行运行PHPUnit
的每个人来说,它看起来是一个非常非常好的界面:
它似乎是 @Matt 的 PHPUnit 测试报告
的下一次迭代
评论
jframework 也有一个不错的 PHPUnit 用户界面。它分解结果,并分别显示所有文件和每个文件的测试覆盖率。 它适用于 Web 和 cli,cli 的好处是在完成后转储每个测试(基于 Web 的必须等到一切都结束)。
如果你不关心重新格式化输出,只想从网页运行 PHPUnit,你可以使用一些 PHP 代码来实现,如下所示:
<pre>
<?php
$argv[0] = "phpunit.phar";
$argv[1] = '--bootstrap';
$argv[2] = 'src/load.php';
$argv[3] = "tests/MoneyTest";
$_SERVER['argv'] = $argv;
include 'phpunit.phar';
?>
</pre>
文件 src/load.php 只是一堆包含类的包含。然后,输出如下所示:
#!/usr/bin/env php
PHPUnit 4.1.2 by Sebastian Bergmann.
........................
Time: 122 ms, Memory: 3.25Mb
OK (24 tests, 43 assertions)
只需忽略第一行,您就可以看到结果。
令我震惊的是,PHPUnit 没有包含执行此操作的基本方法。某些类可能依赖于 Web 服务器。我们只是不测试这些吗?有些网站需要您上传文件,并且不允许命令行执行。
下一个:clearfix 是否已弃用?
评论