gpt4 book ai didi

php - 如何配置 PHPUnit 以测试 ZF2 应用程序中的整个供应商文件夹?

转载 作者:行者123 更新时间:2023-12-04 18:03:58 25 4
gpt4 key购买 nike

我正在开发一个具有通用文件夹结构的 Zend Framework 2 应用程序,因此文件夹 /vendor 包含所有(项目外部)库。设置单元测试环境 我希望能够运行所有供应商测试。文件夹结构因图书馆而异。有些包根本没有测试。

一个可能的解决方案是创建一个测试套件“供应商”并在那里手动定义每个测试文件夹的路径,例如:

phpunit.xml

<?xml version="1.0" encoding="UTF-8"?>
<phpunit ...>
<testsuites>
<testsuite name="vendor">
<directory>../vendor/lib-foo/path/to/tests</directory>
<directory>../vendor/package-bar/path/to/tests</directory>
...
</testsuite>
...
</testsuites>
...
</phpunit>

我不喜欢这个解决方案。首先是因为那时我必须手动处理每个包裹。

另一种解决方案是将 /vendor 定义为测试文件夹:

phpunit.xml

<?xml version="1.0" encoding="UTF-8"?>
<phpunit ...>
<testsuites>
<testsuite name="vendor">
<directory>../vendor</directory>
...
</testsuite>
...
</testsuites>
...
</phpunit>

好吧,但是 PHPUnit 必须扫描很多它不需要的文件夹,并且测试将需要更多时间。

是否有更好的解决方案,可以使流程自动化并避免大量手动配置?

最佳答案

可能很难通过一次测试运行所有 PHPUnit 供应商测试套件。一个问题是,每个不同的测试套件可能会提供自己的配置文件,甚至需要自定义的 bootstrap 配置文件。当使用单个命令运行所有测试套件时,您无法涵盖这一点。

我可能会为此使用一些 shell 魔法。请注意,此示例依赖于每个第 3 方包中存在 phpunit.xml(.dist) 文件(对于大多数库而言,这是一个合理的假设)。您甚至可以将它集成到您​​的持续集成过程中以持续测试它:

for FILE in $(find . -name 'phpunit.xml*') ; do
sh -c 'cd '$(dirname $FILE)' && composer install'
vendor/bin/phpunit -c $FILE
done

关于php - 如何配置 PHPUnit 以测试 ZF2 应用程序中的整个供应商文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30171447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com