如何将ZF2单元/应用程序模块测试整合到一个呼叫中?

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中运行并具有适当的度量报告.

https://gist.github.com/robertbasic/5329789

Ayd*_*san 1

如果您使用的是 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 文件中。

只是一个想法 :)