【问题标题】:Testing multiple classes with PHPUnit使用 PHPUnit 测试多个类
【发布时间】:2010-01-01 23:48:15
【问题描述】:

这可能是一个愚蠢的问题,但我似乎无法让它发挥作用。

我正在使用 PHPUnit 进行测试。目前我在一个名为 Tests.php 的文件中有两个类:

class XTest extends PHPUnit_Framework_TestCase {...}
class YTest extends PHPUnit_Framework_TestCase {...}

但是,我无法同时运行这两个课程。我在 Windows 上运行以下命令:

php "C:\Program Files (x86)\PHP\phpunit" Tests

它会尝试运行一个名为“Tests”的测试类。相反,我希望它运行“XTest”和“YTest”以及文件中的所有内容。如何轻松运行多个测试类?

【问题讨论】:

    标签: php testing phpunit


    【解决方案1】:

    将所有测试放在同一个目录下并要求 PHPUnit 以递归方式遍历它们会起作用,但如果您将测试放在不同的目录下或只想运行特定测试类的特定部分,那么 @group annotation 可能是你在找什么。

    当您执行测试时,您可以使用php "C:\Program Files (x86)\PHP\phpunit" --group <insert_name_of_group_to_which_xtests_and_ytests_belong>,而PHPUnit 只会执行那些在其PHPDoc 中包含@group insert_name_of_group_to_which_xtests_and_ytests_belong 的测试。

    【讨论】:

      【解决方案2】:

      The PHPUnit Docs 解释命令行测试运行程序期望的参数。

      在您的情况下,您提供的是Tests,这意味着 PHPUnit 在文件 Tests.php 中查找类 Tests

      有了这些知识,很容易看出组织测试的最佳方式是为每个文件编写一个测试类,文件名等于TestClassName.php

      但是,如果由于某种原因你不想这样做,你可以提供一个额外的参数来告诉测试运行器测试类在哪个文件中声明:

      php "C:\Program Files (x86)\PHP\phpunit" XTest Tests.php
      php "C:\Program Files (x86)\PHP\phpunit" YTest Tests.php
      

      【讨论】:

      • 但是有没有一种简单的方法来运行多个测试?我不想运行 200 个不同的命令来测试 200 个类...
      • 当然,如果你给测试运行器一个目录作为参数,它会遍历目录递归地运行它找到的所有测试。
      • 在一个文件中测试两个类的另一种选择:1) 将 Tests.php 重命名为 Test.php 2) 将它放到一个单独的目录中,比如 'tests' 3) 运行:phpunit tests跨度>
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-31
      • 1970-01-01
      • 1970-01-01
      • 2016-05-21
      • 2017-10-19
      • 2020-04-10
      • 1970-01-01
      相关资源
      最近更新 更多