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 应用程序单元测试。

4

2 回答 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目录添加到测试环境中,所以我所有的模型测试现在都可以执行了。如您所见,它可以扩展为运行更多/所有测试。

于 2012-07-09T16:35:27.140 回答
0

试试cake test app all。我现在无法确认这会有所不同,但我已经从一个 phing 构建文件中提取了它,我正在和你做同样的事情,所以它应该很好。

于 2012-07-09T01:42:42.227 回答