如何将ZF2单元/应用程序模块测试合并到单个调用中


How to consolidate ZF2 unit/application module tests into a single call?

我遵循在模块中存储测试的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上和很多人讨论过这个问题,我很确定你不能,你需要写一个脚本来循环遍历模块,并在模块的基础上运行它们