CakePHP/Jenkins/Phing - 运行所有单元测试

9
我正在尝试使用Jenkins为我的CakePHP项目构建并运行单元测试/代码覆盖率。到目前为止,我已成功让Jenkins从我的BitBucket存储库自动获取和构建 - 这本身就是一个小胜利。
接下来我想要发生的事情是运行单元测试并生成代码覆盖率报告。
这是我的build.xml文件,在Jenkins中执行(唯一)构建命令phing -f $WORKSPACE/build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="Consumer Love" default="phpunit">
    <target name="phpunit">
        <exec command="cake test app --coverage-clover logs/reports/clover.xml"></exec>
    </target>
</project>

我认为问题在于当你运行cake test app时,它会要求你输入一个具体的测试提示,我一直无法找到一种方法来运行我所有的CakePHP应用程序单元测试。


看起来 CakePHP 2.5 中将会有内置支持(再次?):https://github.com/cakephp/cakephp/pull/2655 - Wooble
2个回答

12
解决方法是创建一个自定义的 CakePHP 测试套件,在其中添加要测试的特定文件/目录,然后使用命令 cake test app AllTests 运行该套件。
例如,这是我的 Test/Case/AllTests.php 文件:
/*
 * Custom test suite to execute all tests
 */

class AllTestsTest extends PHPUnit_Framework_TestSuite {

    public static function suite() {

        $path = APP . 'Test' . DS . 'Case' . DS;

        $suite = new CakeTestSuite('All tests');
        $suite->addTestDirectory($path . 'Model' . DS);
        return $suite;

    }

}

这个测试套件简单地将Models目录添加到测试环境中,因此现在所有的模型测试都会被执行。正如您所看到的,它可以扩展以运行更多/所有的测试,视情况而定。


如果您是通过谷歌搜索到这里的,您可以像这样添加所有测试(而不仅仅是Model目录中的测试):$suite->addTestDirectoryRecursive(TESTS . 'Case'); - gazareth
我认为需要更多的描述,我不理解这里的解决方案,我是否遗漏了什么。 - Deep Singh Baweja

0
尝试运行cake test app all命令。我现在无法确认这是否有所不同,但我从一个Phing构建文件中提取了这个命令,我正在做与您相同的事情,所以应该是有效的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接