Unit testing CakePHP/Jenkins/Phing-运行所有单元测试 我在第一次尝试建立詹金斯,用我的CAKEPHP项目建立和运行单元测试/代码覆盖。到目前为止,我已经成功地让Jenkins从我的BitBucket存储库中自动获取和构建数据,这本身就是一个小小的胜利

Unit testing CakePHP/Jenkins/Phing-运行所有单元测试 我在第一次尝试建立詹金斯,用我的CAKEPHP项目建立和运行单元测试/代码覆盖。到目前为止,我已经成功地让Jenkins从我的BitBucket存储库中自动获取和构建数据,这本身就是一个小小的胜利,unit-testing,cakephp,continuous-integration,jenkins,phing,Unit Testing,Cakephp,Continuous Integration,Jenkins,Phing,我想做的下一件事是运行单元测试并填充代码覆盖率报告 这是我的build.xml,它在Jenkins中通过(仅)build命令phing-f$WORKSPACE/build.xml执行 <?xml version="1.0" encoding="UTF-8"?> <project name="Consumer Love" default="phpunit"> <target name="phpunit"> <exec command

我想做的下一件事是运行单元测试并填充代码覆盖率报告

这是我的build.xml,它在Jenkins中通过(仅)build命令
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 app单元测试。

试试
cake test app all
。我现在无法确认这是否有区别,但我已经从phing构建文件中提取了这一点,我正在做与您相同的事情,因此它应该是好的。

解决方案是创建一个定制的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
目录添加到测试环境中,因此现在可以执行我的所有模型测试。正如您所看到的,它可以扩展以运行更多/所有测试。

CakePHP 2.5中似乎会(再次?)对此提供内置支持:如果您通过Google来到这里,您将添加所有测试(不仅仅是来自Model dir的测试),如下所示:
$suite->addTestDirectoryRecursive(tests.'Case')我认为需要更多的描述,我不理解这里的解决方案,我是否遗漏了什么