【发布时间】:2015-07-22 04:19:48
【问题描述】:
我正在开发一个具有通用文件夹结构的 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 必须扫描很多它不需要的文件夹,并且测试将需要更多时间。
是否有更好的解决方案,可以使流程自动化并避免大量手动配置?
【问题讨论】:
-
但是为什么要这样做呢?你有很多不稳定的供应商包(开发分支等)吗?大多数稳定包都由供应商自己测试,并且只有在所有测试都通过时才作为稳定版本发布。
-
其实你是对的——外部包通常是经过测试的。我只想确保这一点,例如,如果我更新依赖项(例如使用
composer update)并安装了新版本的外部库。此外,如果不仅使用众所周知且经过良好测试的开源软件包(如 Zend Framework 或 Symfony),而且使用具有较低“信任级别”/QA 级别的外部库,例如由合作伙伴、组织的其他部门等提供的库。
标签: php zend-framework2 phpunit test-suite