2012-07-06 39 views
9

Tôi đang ở giữa giai đoạn đầu tiên của mình khi thiết lập Jenkins để xây dựng và chạy thử nghiệm/mã đơn vị với dự án CakePHP của tôi. Cho đến nay tôi đã thành công trong việc tìm nạp và xây dựng Jenkins từ kho lưu trữ BitBucket của tôi - một chiến thắng nhỏ trong chính nó.CakePHP/Jenkins/Phing - Chạy tất cả các bài kiểm tra đơn vị

Điều tiếp theo tôi muốn xảy ra là để thử nghiệm đơn vị chạy và mã báo cáo vùng phủ sóng được điền.

Đây là build.xml của tôi, hiện đang được thực hiện trong Jenkins với (chỉ) xây dựng lệnh 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> 

Tôi nghĩ vấn đề là khi bạn chạy cake test app nó yêu cầu một dấu nhắc trong đó cụ thể các thử nghiệm bạn muốn chạy, tôi không thể tìm ra phương pháp để chạy tất cả các thử nghiệm đơn vị ứng dụng CakePHP của tôi.

+0

Dường như sẽ có hỗ trợ tích hợp cho điều này (một lần nữa?) Trong CakePHP 2.5: https://github.com/cakephp/cakephp/pull/2655 – geoffspear

Trả lời

12

Giải pháp là tạo bộ kiểm tra CakePHP tùy chỉnh để thêm các tệp/thư mục cụ thể cần kiểm tra, sau đó chạy bộ đó bằng lệnh cake test app AllTests.

Ví dụ, đây là tôi 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; 

    } 

} 

TestSuite này chỉ đơn giản là thêm thư mục Models đối với môi trường thử nghiệm, vì vậy tất cả các bài kiểm tra mô hình của tôi bây giờ được thực thi. Như bạn có thể thấy nó có thể được mở rộng để chạy nhiều hơn/tất cả các bài kiểm tra như đã thấy phù hợp.

+0

Nếu bạn nhận được ở đây thông qua Google, bạn thêm * tất cả * các bài kiểm tra (không chỉ từ các mô hình dir) như thế này: '$ suite-> addTestDirectoryRecursive (TESTS. 'Case'); ' – gazareth

+0

tôi nghĩ mô tả là cần thiết, tôi không hiểu giải pháp ở đây, tôi đang thiếu thứ gì đó –

0

Hãy thử cake test app all. Tôi không thể xác nhận điều này tạo ra sự khác biệt ngay bây giờ, nhưng tôi đã kéo nó ra khỏi một tập tin xây dựng phing mà tôi đang làm điều tương tự như bạn vì vậy nó nên được tốt.

+0

Tính năng này hoạt động trong các phiên bản cũ hơn của Bánh – Dunhamzzz