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

Dun*_*zzz 9 phing continuous-integration unit-testing cakephp jenkins

我正在第一次尝试设置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>
Run Code Online (Sandbox Code Playgroud)

我认为问题是,当你运行cake test app它要求提示你要运行哪些特定测试时,我一直无法找到运行我所有 CakePHP应用程序单元测试的方法.

Dun*_*zzz 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;

    }

}
Run Code Online (Sandbox Code Playgroud)

这个测试套件只是将Models目录添加到测试环境中,所以现在我的所有模型测试都会被执行.如您所见,它可以扩展为运行更多/所有测试.