2012-07-06 37 views
9

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

我想要发生的下一件事是单元测试运行并编写覆盖率报告来填充。

这里是我的build.xml,这是正在詹金斯与(只)建立命令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应用程序单元测试的全部

+0

它看起来像CakePHP 2.5中会有内置的支持(再次?):https://github.com/cakephp/cakephp/pull/2655 – geoffspear 2014-02-17 19:53:13

回答

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目录到测试环境,所以我所有的模型试验,现在得到执行。正如你所看到的,它可以扩展到运行更多/所有测试。

+0

如果你得到在这里通过谷歌,你添加*所有*测试(不只是那些从模型目录)像这样:'$ suite-> addTestDirectoryRecursive(TESTS。'Case');' – gazareth 2015-11-18 16:46:55

+0

我想更多的描述是必需的,我不理解解决方案在这里,我错过了什么 – 2017-06-07 13:44:52

0

尝试cake test app all。我无法确认这是否与现在有所不同,但是我已经从phing build文件中提取出来,在这里我和你做了同样的事情,所以它应该是好的。

+0

这在旧版本的蛋糕 – Dunhamzzz 2012-07-09 16:31:05

相关问题