PHPUnit 测试的“Web 界面”?

"Web interface" to PHPUnit tests?

提问人:Pekka 提问时间:3/11/2010 更新时间:7/31/2019 访问量:27029

问:

是否有一个简单的“Web 界面”来运行 PHPUnit 测试套件?即在命令行上运行测试的 PHP 脚本,并输出格式良好的 HTML 结果。

我开发 Web 应用程序,日常工作流程通常在 IDE 和浏览器之间切换。我希望在同一环境中进行单元测试。

我正在寻找一些非常简单且基于 PHP 的东西 - 我计划进入 phpUnderControl(它具有我正在寻找的功能),但还没有。

php 单元测试 tdd phpunit

评论

0赞 middus 3/11/2010
+1 佩卡说,你读不懂我的心思,是吗?
0赞 Pekka 3/11/2010
@middus SO 有时会出现惊人的巧合。:)
0赞 wimvds 5/18/2010
您可能还想查看 Hudson 作为 phpUnderControl 的替代品。一篇关于如何设置它的好文章(有一些很好的在线参考资料)可以在 luhman.org/blog/2009/12/16/...
0赞 Pekka 5/18/2010
@wim很好,会看看的。谢谢!

答:

14赞 Gordon 3/11/2010 #1

您可以使用 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 集成。

评论

0赞 Pekka 3/11/2010
干杯@Gordon这看起来很有趣。不过,我想绕过额外的依赖关系,所以我将尝试我首先找到的博客文章(见下文)。如果这不起作用,我会回到这个。
0赞 Gordon 3/11/2010
@Pekka博客文章中的方法似乎相似。它还使用 XML,然后将其重新格式化为 HTML。如果你不想使用phing,你可以从PHPUnit获取XML,然后使用Phing的XSLT来用PHP进行编程转换。我认为XSL文件在这里:phing.info/trac/browser/trunk/etc
0赞 user1 10/4/2016
作为phpunit的新手,我无法使用这些工具。为每个工具创建了 2 个文件,但不知道如何处理它们。
0赞 Gordon 10/10/2016
@mr_jigsaw TBH,作为新手,可以掌握如何从 CLI 使用 phpunit。这就是它的用途。除非您想与某种 CI 解决方案集成或需要自定义报告,否则以任何其他方式使用它都没有真正的好处。此外,大多数 IDE 都集成了 phpunit,例如简单的 ui 界面。对于您现在拥有的任何用例来说,这应该已经足够了。
0赞 user1 10/10/2016
@Gordon“这就是它的用途”——它是为了向我展示哪些测试失败了。我希望输出是一个漂亮的网页,而不是控制台中的一些文本。每当 CLI phpunit 有用时,我就无法想象 GUI phpunit 没有用。对他们来说,阅读什么更清楚是每个人的决定。对我来说,它是 GUI。
1赞 Pascal MARTIN 3/11/2010 #2

我从未见过这样的网络界面......但是,正如您所说,您总是使用IDE和Web浏览器,为什么不换一种方式思考呢?

即一个可能的解决方案是从你的IDE启动单元测试;-)
这意味着您应该能够单击失败的测试以“跳转到”测试方法或导致测试失败的原因。


在 PHP + PHPUnit 的世界里,我知道 Zend Studio 是这样做的——是的,它不是免费的,不幸的是;-(


使用 Eclipse PDT,解决方案是将 PHPUnit 注册为外部工具(请参阅或实例此博客文章:将 PHPUnit 与 Eclipse PDT 一起使用)——但它并不性感,您不能单击结果来跳转方法/测试......

另一个解决方案是开发一个插件来将 PHPUnit 集成到 Eclipse PDT 中(我想就像为 Zend Studio 所做的那样)——前段时间创建了一个 phpunit4eclipse,但这只是一个开始,并没有取得太大的成功,所以作者在发布后没有做任何工作......

评论

0赞 Pekka 3/11/2010
干杯@Pascal,很好的提示,但我既不使用 Zend 也不使用 Eclipse(我使用 phpEd)。自从我购买上次更新以来已经有一段时间了,所以现在可能也支持它 - 我会明确检查,好主意。不过,我仍然非常喜欢独立于 IDE 的解决方案。
1赞 Jonathan Day 12/16/2010
Netbeans 还有一个方便的 PHPUnit Runner GUI,也允许调试测试,这在测试因未知原因失败/出错时非常有用。
1赞 Pekka 3/11/2010 #3

我发现了这一点

我偶然发现了 Parth Patil 的一篇文章,他的解决方案是从 PHPUnit 创建一个 xml 报告,然后使用这个 xml 创建你自己的报告。

我使用了他的解决方案,使其与 PHPUnit 3.4 兼容,并且还添加了一些 Reflection 以在报告中查看我的测试用例文档注释。(注意:对于 refelection,我使用 Zend_Framework 反射类)

1赞 Matthieu Napoli 3/17/2010 #4

好的,你说你更喜欢一个独立的IDE解决方案,但你知道最近有一个插件,可以简单地在Eclipse中执行PHPUnit,并且有一个很好的表示(就像在Zend Studio中一样,但免费)。

这是链接,如果您有问题,主要开发人员也会快速回复电子邮件:

http://www.phpsrc.org/wiki/

我亲自测试了一些 Web 界面,但我总是被欺骗(不是真正实用和稳定)。但这是你的选择。

评论

0赞 Pekka 3/17/2010
干杯 Matthieu,我不使用 eclipse,但这仍然很高兴知道。+1
0赞 Softy 5/14/2010 #5

您始终可以使用 Maven for PHP,从中可以使用 surefire 报告(mvn 站点)。 更多信息请见: http://www.php-maven.org

23赞 Matt 6/28/2010 #6

我感受到你的挫败感——我自己就是一个 UI 人。看终端太久让我头晕目眩。我写了一个简短的应用程序,您可能会觉得很有帮助。

PHPUnit 测试应用程序
(来源:mattmueller.me

你可以在这里找到它: http://mattmueller.me/blog/introducing-phpunit-test-report

干杯! 马 特

评论

6赞 Bruiser 7/15/2011
Matt 的解决方案很棒,有了这个叉子,它变得更好了。github.com/NSinopoli/VisualPHPUnit竖起大拇指!
3赞 Yahya Uddin 9/22/2016
您的链接已损坏
18赞 Motin 6/1/2011 #7

经过最近几个小时的研究,我遇到的最好的 PHPUnit Web 前端是 https://github.com/NSinopoli/VisualPHPUnit

7赞 Tom 6/15/2011 #8

您可以使用 Jenkins 运行任何类型的任务,包括 PHPUnit 测试。它可以自动检出您的应用程序、运行测试、构建 HTML 报告,甚至可以在构建失败时向您发送电子邮件。

以下是设置 Jenkins 所需的模板,以便从您的项目中构建一堆有趣的报告和统计数据。

28赞 edorian 12/20/2011 #9

我最近发现了Visual PHPUnit,对于不想从命令行运行PHPUnit的每个人来说,它看起来是一个非常非常好的界面:

Visual PHPUnit

它似乎是 @Matt 的 PHPUnit 测试报告的下一次迭代

评论

3赞 Fractaliste 6/6/2014
是否可以在没有梨形配置的情况下安装它?
2赞 AbiusX 8/18/2013 #10

jframework 也有一个不错的 PHPUnit 用户界面。它分解结果,并分别显示所有文件和每个文件的测试覆盖率。 它适用于 Web 和 cli,cli 的好处是在完成后转储每个测试(基于 Web 的必须等到一切都结束)。

常规 Web 输出,每个文件的代码覆盖率

Code coverage report for a single file

2赞 Charles 6/9/2014 #11

如果你不关心重新格式化输出,只想从网页运行 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 服务器。我们只是不测试这些吗?有些网站需要您上传文件,并且不允许命令行执行。