2012-07-06 40 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

相關問題