我遵循ZF2在模块中存储测试的惯例,当从每个模块中运行测试时,一切正常。我想要做的是有一个根级phpunit.xml,它调用单个模块测试并合并它们以产生代码覆盖率数据和其他指标。
问题是每个单独的测试套件都是在模块化phpunit.xml文件中引导的。我知道做事的唯一方法是在每个phpunit.xml文件中配置引导程序,这显然在从root运行测试时不会被选中,因为忽略了单独的xml文件。
所以我的问题是:是否有一种方法可以让根级phpunit.xml文件从模块中读取单独的phpunit.xml和bootstrap文件,如果你愿意,还有一种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>
更新
目标是让PHPUnit生成代码度量标准,提供项目概述,而不是模块化特定概述。我很欣赏答案中的脚本将按模块运行单元测试,但这不是我想要的。据我所知,就PHPUnit而言,这可能是一个限制。我将在接下来的几天内对此进行研究,并尝试找到一个解决方案,因为它似乎适用于许多处理自定义模块的项目。
更新2
Robert Basic提出了一个脚本,该脚本创建了一个内部模块报告的目录结构,它运行良好,但在PHPUnit中使用适当的指标报告运行它会很不错。
答案 0 :(得分:1)
之前在各种人群中讨论过这个问题我很确定你不能,你需要编写一个脚本来循环遍历模块并逐个模块地运行它们。
答案 1 :(得分:1)
如果您使用的是Linux,则可以创建一个简单的脚本。不完全是你想要的解决方案,但可以帮助你:
#!/bin/sh
modDir=$(pwd)
for i in *; do
if [[ -d $i/test ]]; then
cd $i/test
phpunit
cd $modDir
fi
done
您可以将其放入模块目录中的runtests.sh文件中。
只是一个想法:)