代码之家  ›  专栏  ›  技术社区  ›  Allain Lalonde

让phpunit忽略事情?

  •  6
  • Allain Lalonde  · 技术社区  · 15 年前

    我有一个phpunit测试类,我希望在测试运行中被忽略。我知道我可以通过重命名它来做到,这样它的文件名中就不会包含单词test,但我不想这样做,因为它会比我想要的更混乱源代码管理的水域。

    有人有什么建议吗?

    5 回复  |  直到 9 年前
        1
  •  15
  •   Pascal MARTIN    15 年前

    有两种选择 phpunit 可以帮助定义应运行和不应运行哪些测试的命令:

    $ phpunit --help
    PHPUnit 3.4.0beta5 by Sebastian Bergmann.
    
    Usage: phpunit [switches] UnitTest [UnitTest.php]
           phpunit [switches] <directory>
    ...
      --filter <pattern>       Filter which tests to run.
      --group ...              Only runs tests from the specified group(s).
      --exclude-group ...      Exclude tests from the specified group(s).
      --list-groups            List available test groups.
    ...
    

    这些可能不允许指定 确切地 你想要的…但他们可能会有所帮助。

    有关详细信息,请参阅 The Command-Line Test Runner


    特别是,我有点喜欢小组特征:只需使用 @group 标记测试的phpDoc,重新分组 (例如,每个“功能块”一组) ;之后,您可以使用 --group --exclude-group 命令行上用于指定应运行或不应运行哪些测试的选项。

    在您的例子中,如果您不能修改测试,那么--filter选项可能会有所帮助,这取决于您的测试是如何命名的。 (也就是说,如果有一种方法可以识别出你想要运行的那些程序) :

    --filter
    只运行名称与给定模式匹配的测试。模式可以是 单个测试的名称或 匹配的正则表达式 多个测试名称。


    另一种解决方案是,如果不总是更改要运行的测试的“组”,则可能使用只包含要运行的测试的测试套件。

    例如,看看 Composing a Test Suite Using XML Configuration .

        2
  •  6
  •   Mabrouk    13 年前

    只需重命名方法:

    测试功能 (){ //BLAH }

    伊格内雷 测试功能 (){ //BLAH }

        3
  •  4
  •   pinkgothic sudip    14 年前

    我知道这是一个老问题,有一个公认的答案,所以我希望我没有打扰,但我只是想指出,为了完成任务,有可能 skip tests . 不完整和跳过的测试不会由phpunit执行。

    当然,这是在每个测试级别上的——但是,您可以通过将其放入类中来整合它。 setUp() .

    抬头一点。

        4
  •  1
  •   TrueWill    9 年前

    我搜索了整个 PHPUnit 没有找到任何东西。为了测试覆盖率的目的,可以忽略代码,但这就是问题所在。但是,这个 ChangeLog (在一个明显的fork中)提到它将“忽略带有前缀的测试文件名” . “我没试过,但值得一试。或者你可以对测试进行评论。我假设你想要像努尼特提供的那样的东西,它会报告被忽略的测试;我没有发现类似的东西。

        5
  •  1
  •   M. Marc    9 年前

    我更喜欢在函数中使用普通名称,并将其放入函数docbloc

    /**
    * @test
    */
    public function getDetails()
    {}
    

    所以,当我不想运行这个测试时,我只需要删除@test。 另外,也许你会在这里找到一些有用的东西 PHPUnit - The XML Configuration File 我在“排除”标签测试中添加了我不想被phpunit覆盖的内容。