Tom*_*itt 6 php phpunit unit-testing zend-framework2
我遵循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>
Run Code Online (Sandbox Code Playgroud)
更新
目标是让PHPUnit生成的代码度量标准提供项目概述,而不是模块化的特定概述.我很欣赏答案中的脚本将按模块运行单元测试,但这不是我想要的.据我所知,就PHPUnit而言,这可能是一个限制.我将在接下来的几天内对此进行研究,并尝试找到一个解决方案,因为它似乎对许多处理自定义模块的项目很有用.
更新2
Robert Basic提出了一个脚本,该脚本创建了一个目录结构,其中包含模块内部报告,并且它工作得很好但是很高兴让它在PHPUnit中运行并具有适当的度量报告.
如果您使用的是 Linux,您可以创建一个简单的脚本。不完全是您想要的解决方案,但仍然可以提供帮助:
#!/bin/sh
modDir=$(pwd)
for i in *; do
if [[ -d $i/test ]]; then
cd $i/test
phpunit
cd $modDir
fi
done
Run Code Online (Sandbox Code Playgroud)
您可以将其放入模块目录中的 runtests.sh 文件中。
只是一个想法 :)