我遵循在模块中存储测试的ZF2约定,当测试从每个模块内运行时,一切都很好。我想做的是有一个根级phpunit.xml,它调用各个模块测试并合并它们以产生代码覆盖率数据和其他指标。
问题是每个单独的测试套件都是在模块化的phpunit.xml文件中引导的。我知道做事情的唯一方法是在每个phpunit.xml文件中配置引导,当从根运行测试时,由于单个xml文件被忽略,显然不会被拾取。
所以我的问题是:有没有一种方法可以让根级phpunit.xml文件从模块中读取单独的phpunit.xml和引导文件,如果你愿意,一种phpunit配置继承?我可以沿着在php或CI脚本中编写这条路线,但我希望在开发过程中快速完成它,并且这种解决方案仍然不会产生统一的代码报告。
基本上,我想要这样的东西,但不是运行测试,而是希望它运行每个模块中的单个phpunt .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中运行,并提供适当的指标报告,那就更好了。
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文件中。
只是一个想法:)
我之前在irc上和很多人讨论过这个问题,我很确定你不能,你需要写一个脚本来循环遍历模块,并在模块的基础上运行它们