2010-03-11 104 views
45

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

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

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

+0

+1 Say Pekka,你无法读懂我的想法,对吗? – middus

+0

@middus有时有*惊人*巧合。 :) –

+0

你也可能想看看Hudson作为phpUnderControl的替代品。一篇很好的文章(有一些很好的在线参考资料)关于如何设置它可以在http://luhman.org/blog/2009/12/16/installing-hudson-phing-phpunit-and-git-ubuntu – wimvds

回答

12

您可以使用phing运行PHPUnitTask,然后转换的输出与:

  • PHPUnitReport - 这个任务转换PHPUnit的XML报告使用XSLT为HTML。

实施例:

<phpunitreport infile="reports/testsuites.xml" 
    format="frames" 
    todir="reports/tests" 
    styledir="/home/phing/etc"/> 

用于各种输出格式参见phpunit --help

2.3版的PHPUnit有一章介绍了这一点,但现在已经有一段时间了。您可能能够在某处找到Google的旧版本。

既然你提到这是为phpUnderControl:如果你不固定在那,考虑使用詹金斯和http://jenkins-php.org

在旁注:除非我们正在谈论CI服务器,否则大多数我认识的人都不会通过Web界面使用PHPUnit。他们或者只是使用命令行或者他们的IDE集成。

+0

干杯@戈登这看起来很有趣。不过,我想绕过附加依赖关系,所以我会尝试首先找到的博客文章(请参见下文)。如果这不起作用,我会回到这个。 –

+0

@Pekka博客文章中的方法看起来很相似。它也使用XML,然后将其重新格式化为HTML。如果您不想使用phing,只需从PHPUnit获取XML,然后使用Phing的XSLT以编程方式转换为PHP即可。我认为XSL文件在这里:http://phing.info/trac/browser/trunk/etc – Gordon

+0

当前链接到XSL文件是http://www.phing.info/trac/browser/etc –

1

我从来没有见过这样的网络界面......但是,正如你所说,你总是使用你的IDE和你的网页浏览器,为什么不以另一种方式思考?

即一个可能的解决方案是从你的IDE启动unittests ;-)
这意味着你应该能够点击失败的测试来“跳转”到测试方法或导致例如,测试失败。


在PHP + PHPUnit的世界,我知道Zend Studio确实是 - 是的,它不是免费的,不幸的是;-(


使用Eclipse PDT,一个解决办法是注册PHPUnit的作为外部工具(请参阅或实例这个博客文章:Using PHPUnit with Eclipse PDT) - 但它不是性感的,你不能点击结果跳转方法/测试...

另一种解决方案是开发一个插件集成PHPUnit导入Eclipse PDT (就像Zend Studio所做的一样,我是su ppose) - 一个phpunit4eclipse创建前一段时间,但它只是一个开始,并没有得到太多的更迭,所以笔者并没有释放,经过上工作...

+0

干杯@Pascal,很好的提示,但我既不使用Zend也不使用Eclipse(我使用phpEd)。自从我购买上一次更新以来,这已经有一段时间了,所以现在可以支持这一点 - 我将明确检查,确定主意。不过,我仍然更喜欢独立于IDE的解决方案。 –

+0

不客气:-) ;;哦,关于另一个IDE确定^^ –

+1

Netbeans也有一个方便的PHPUnit Runner GUI,它允许调试测试,当测试出于未知原因失败/错误时这很有用。 –

1

我发现this

我从Parth Patil发布了一篇文章,其解决方案是从PHPUnit创建一个xml报告,然后使用此xml创建您自己的报告。

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

1

好吧你说你会喜欢一个独立的IDE解决方案,但只是让你知道有一个最近的插件,使执行PHPUnit的简单到Eclipse,和有一个很好的代表(像在Zend Studio中,但免费)。

这里是链接,主要developper回复快速的电子邮件太多,如果你有一个问题:

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

我personnaly测试了一些web界面,但我一直被欺骗了(不是真的practital和稳定)。但这是你的选择。

+0

干杯Matthieu,我不使用eclipse,但这仍然是很好的知道。+1 –

22

我觉得你的失望 - 我是一个UI人自己。看着终端太久会让我头晕目眩。我写了一个快速的小应用程序,您可能会发现有帮助。

PHPUnit test application http://mattmueller.me/blog/wp-content/uploads/2010/06/test.png

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

干杯! 马特

+6

马特的解决方案非常棒,用这个叉子就可以变得更好。 https://github.com/NSinopoli/VisualPHPUnit 竖起大拇指! – Bruiser

+0

你的链接被破坏 –

7

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

Here's the templates您需要设置Jenkins以从您的项目中构建一堆有趣的报告和统计数据。

+0

jenkins +1! – Matt

26

我最近发现Visual PHPUnit它看起来像一个非常非常漂亮的界面给大家,不希望在命令行中运行的PHPUnit:

Visual PHPUnit

这似乎是@马特的下一个迭代PHPUnit Test Report

+3

是否可以在没有* pear *配置的情况下安装它? – Fractaliste

1

jframework对PHPUnit也有很好的UI。它打破了结果,并分别显示了所有文件和每个文件的测试覆盖率。 它既可以在web上运行,也可以在cli上运行,cli可以在每次测试完成后倾倒每个测试(基于web的测试必须等到一切结束)。

General web output, with code coverage per file

Code coverage report for a single file

0

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