【问题标题】:Excluding certain tests from loading in phpunit在 phpunit 中排除某些测试
【发布时间】:2016-11-29 23:49:16
【问题描述】:

我的一些测试用例使用自定义测试库。这些测试用例也很慢。所以我想只在构建服务器而不是我的本地运行它们。我想在本地运行其他测试。

以下是目录结构。 slow 目录中的那些是应该排除的慢速测试用例。

/tests/unit-tests/test-1.php
/tests/unit-tests/test-2.php
/tests/unit-tests/slow/test-1.php
/tests/unit-tests/slow/test-2.php
/tests/unit-tests/foo/test-1.php
/tests/unit-tests/bar/test-2.php

我尝试使用@group 注释创建组。这可行,但问题是这些测试文件正在加载(尽管测试未执行)。由于他们需要未在本地安装的测试库,因此会出错。

创建 phpunit.xml 配置以默认排除(甚至不加载)这些慢速测试并在需要时可以执行的最佳方法是什么?

【问题讨论】:

    标签: phpunit


    【解决方案1】:

    有两种选择:

    1. 在您的 phpunit.xml 中创建 2 套测试套件 - 一套用于 CI 服务器,一套用于本地开发
    <testsuites>
        <testsuite name="all_tests">
            <directory>tests/unit-tests/*</directory>
        </testsuite>
        <testsuite name="only_fast_tests">
            <directory>tests/unit-tests/*</directory>
            <!-- Exclude slow tests -->
            <exclude>tests/unit-tests/slow</exclude>
        </testsuite>
    </testsuites>
    

    所以你可以在 CI 服务器上运行

    phpunit --testsuite all_tests
    

    本地

    phpunit --testsuite only_fast_tests
    

    显然,您可以根据需要命名测试套件。

    1. 我认为最好的方法是:
    • 创建phpunit.xml.dist并配置phpunit的默认执行(对于CI服务器和所有刚刚克隆存储库的人)
    • 修改phpunit.xml,通过配置本地执行phpunit (通过将&lt;exclude&gt;tests/unit-tests/slow&lt;/exclude&gt; 添加到默认值 测试套件)
    • 从版本控制中排除phpunit.xml

    来自docs

    如果 phpunit.xml 或 phpunit.xml.dist(按此顺序)存在于 当前工作目录和 --configuration 未使用, 配置将自动从该文件中读取。


    一些链接:

    The XML Configuration File. Test Suites

    How to run a specific phpunit xml testsuite?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-27
      • 2015-11-15
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      • 2013-10-18
      相关资源
      最近更新 更多