从phpunit中加载某些测试

时间:2016-07-26 10:58:29

标签: phpunit

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

以下是目录结构。 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配置的最佳方法是什么,默认情况下排除(甚至不加载)这些慢速测试,如果需要可以执行?

1 个答案:

答案 0 :(得分:6)

有两个选项:

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

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

2)我认为更好的方法是:

  • 创建phpunit.xml.dist并配置phpunit的默认执行(对于CI服务器和所有刚刚克隆存储库的人)
  • 通过配置phpunit的本地执行来修改phpunit.xml (通过将<exclude>tests/unit-tests/slow</exclude>添加到默认值 testsuite)
  • 从版本控制中排除phpunit.xml

来自docs

  

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

一些链接:

The XML Configuration File. Test Suites

How to run a specific phpunit xml testsuite?