我遵循将测试存储在模块中的 ZF2 约定,并且当从每个模块内运行测试时一切正常。我想做的是有一个根级别的 phpunit.xml 来调用各个模块测试并将它们合并以生成代码覆盖率数据和其他指标。
问题是每个单独的测试套件都是在模块化 phpunit.xml 文件中引导的。我知道做事情的唯一方法是在每个 phpunit.xml 文件中配置引导程序,当从 root 运行测试时,该文件显然不会被拾取,因为单个 xml 文件被忽略。
所以我的问题是:有没有办法让根级 phpunit.xml 文件从模块读取单独的 phpunit.xml 和引导文件,如果愿意的话,这是一种 phpunit 配置继承?我可以沿着 Phing 或 CI 脚本编写此内容的路线,但我希望它在开发过程中快速而肮脏地完成,并且该解决方案仍然不会生成综合代码报告。
基本上,我想要这样的东西,但我不希望运行测试,而是希望它运行每个模块中的单独 phpunit.xml 文件。这可能吗?
<?xml version="1.0" encoding="UTF-8"?>
<phpunit>
<testsuites>
<testsuite name="Site Tests">
<directory>./module/Application/test/ApplicationTest</directory>
<directory>./module/User/test/UserTest</directory>
</testsuite>
</testsuites>
</phpunit>
Update
目的是让 PHPUnit 生成代码度量来提供项目概述,而不是特定于模块的概述。我很欣赏答案中的脚本将在每个模块的基础上运行单元测试,但这不是我想要的。我知道这可能是 PHPUnit 的一个限制。我将在接下来的几天里研究这个问题,并尝试找到一个解决方案,因为它似乎在许多处理自定义模块的项目中很有用。
Update 2
Robert Basic 提出了一个脚本,该脚本创建一个目录结构,其中包含模块报告,它工作得很好,但如果让它在 PHPUnit 中运行并具有适当的指标报告,那就太好了。
https://gist.github.com/robertbasic/5329789 https://gist.github.com/robertbasic/5329789
如果您使用的是 Linux,您可以创建一个简单的脚本。不完全是您想要的解决方案,但仍然可以提供帮助:
#!/bin/sh
modDir=$(pwd)
for i in *; do
if [[ -d $i/test ]]; then
cd $i/test
phpunit
cd $modDir
fi
done
您可以将其放入模块目录中的 runtests.sh 文件中。
只是一个想法 :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)