【问题标题】:"Web interface" to PHPUnit tests?PHPUnit 测试的“Web 界面”?
【发布时间】:2011-01-26 08:05:39
【问题描述】:

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

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

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

【问题讨论】:

  • +1 说 Pekka,你无法读懂我的想法,是吗?
  • @middus 有时在 SO 上有 惊人的 巧合。 :)
  • 您可能还想查看 Hudson 作为 phpUnderControl 的替代方案。可以在luhman.org/blog/2009/12/16/…找到一篇关于如何设置的好文章(有一些很好的在线参考资料)。
  • @wim 非常好,会研究一下。谢谢!

标签: php unit-testing tdd phpunit


【解决方案1】:

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

这似乎是@Matt 的PHPUnit Test Report 的下一次迭代

【讨论】:

  • 不配置pear也可以安装吗?
【解决方案2】:

我感到你很沮丧 - 我自己就是一名 UI 专家。看着终端太久让我头晕目眩。我写了一个快速的小应用程序,您可能会觉得它有帮助。


(来源:mattmueller.me

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

干杯! 马特

【讨论】:

【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

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

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

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

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

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

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


        在 PHP + PHPUnit 世界中,我知道 Zend Studio 可以做到这一点——是的,它不是免费的,不幸的是;-(


        使用 Eclipse PDT,一种解决方案是将 PHPUnit 注册为外部工具(参见或实例此博文:Using PHPUnit with Eclipse PDT)——但这并不性感,您不能单击结果来跳转方法/测试。 .

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

        【讨论】:

        • 干杯@Pascal,很好的提示,但我既不使用 Zend 也不使用 Eclipse(我使用 phpEd)。自从我购买最后一个更新以来已经有一段时间了,所以现在可能在那里也支持它 - 我一定会检查一下,好主意。不过,我仍然更喜欢独立于 IDE 的解决方案。
        • Netbeans 还有一个方便的 PHPUnit Runner GUI,允许调试测试,这在测试因未知原因失败/出错时很有用。
        【解决方案8】:

        我找到this

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

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

        【讨论】:

          【解决方案9】:

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

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

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

          我亲自测试了一些网络界面,但我一直被欺骗(不是很实用和稳定)。但这是你的选择。

          【讨论】:

          • 干杯马蒂厄,我不使用 Eclipse,但这仍然很高兴知道。 +1
          【解决方案10】:

          jframework 还为 PHPUnit 提供了一个不错的 UI。它会破坏结果,并分别显示所有文件和每个文件的测试覆盖率。 它适用于 web 和 cli,其中 cli 具有在完成后转储每个测试的好处(基于 web 的必须等到一切都结束)。

          【讨论】:

            【解决方案11】:

            您始终可以使用适用于 PHP 的 Maven,您可以从中使用万无一失的报告(mvn 站点)。 更多信息在这里:http://www.php-maven.org

            【讨论】:

              猜你喜欢
              • 2016-09-14
              • 1970-01-01
              • 1970-01-01
              • 2014-02-23
              • 1970-01-01
              • 2014-03-05
              • 1970-01-01
              • 2021-09-10
              • 2013-02-23
              相关资源
              最近更新 更多