我的一些测试用例使用自定义测试库。这些测试用例也很慢。所以我想只在构建服务器中运行它们而不是在本地运行它们。我想在本地运行其他测试。
以下是目录结构。 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配置的最佳方法是什么,默认情况下排除(甚至不加载)这些慢速测试,如果需要可以执行?
答案 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.xml
(通过将<exclude>tests/unit-tests/slow</exclude>
添加到默认值
testsuite)phpunit.xml
。来自docs:
如果phpunit.xml或phpunit.xml.dist(按此顺序)存在于 当前工作目录和--configuration未使用, 配置将自动从该文件中读取。
一些链接: