2012-04-20 31 views
50

Tôi đang sử dụng phpunit trong mối liên hệ với Jenkins, và tôi muốn bỏ qua các bài kiểm tra nào đó bằng cách thiết lập cấu hình trong file XML phpunit.xmlLàm cách nào để bỏ qua các bài kiểm tra trong PHPunit?

tôi biết rằng tôi có thể sử dụng trên dòng lệnh:

phpunit --filter testStuffThatBrokeAndIOnlyWantToRunThatOneSingleTest

Tôi làm cách nào để dịch từ đó sang tệp XML vì thẻ <filters> chỉ dành cho mã bảo hiểm?

Tôi muốn để chạy tất cả các xét nghiệm ngoài testStuffThatAlwaysBreaks

+1

KO: điều gì về việc khắc phục thử nghiệm? btw, hi từ welly ;-) – zerkms

+0

Tôi đã không viết các bài kiểm tra, nó là một cái gì đó không liên quan, và cũng không muốn thay đổi các tập tin lõi – Filype

+0

Nghi ngờ bạn có thể làm như vậy. Đó là một yêu cầu rất lạ – zerkms

Trả lời

92

Cách nhanh nhất và dễ nhất để bỏ qua bài kiểm tra được hoặc bị hỏng hoặc bạn cần để tiếp tục làm việc sau này là chỉ cần thêm phần sau đây vào đầu bài kiểm tra đơn vị cá nhân của bạn:

$this->markTestSkipped('must be revisited.'); 
+0

bạn luôn có thể thêm thư mục hoặc kiểm tra vào tệp cấu hình xml, nếu đây là bộ điều khiển hoặc tương tự, thực sự không thực tế vì bạn có thể có hàng tá các thử nghiệm khác trong tệp đó. tôi đoán nếu bạn không có quyền truy cập vào các bài kiểm tra đơn vị, không chắc chắn tôi hiểu lý do tại sao, sau đó bạn không có lựa chọn khác hơn để loại trừ. – jsteinmann

+3

Vì nó là một phương thức tĩnh (ít nhất là trong PHPUnit 3), và một số lớp sử dụng afaik ràng buộc tĩnh muộn, bạn nên sử dụng 'static :: markTestSkipped ('');' thay vì '$ this->'. Nó sẽ tạo ra một cảnh báo trong các phiên bản PHP mới hơn. Chữ ký: 'hàm tĩnh công khai markTestSkipped ($ message = '')' – DanFromGermany

+0

Cần một ví dụ tốt hơn về tệp kiểm tra đơn vị đầy đủ. Không chỉ là một đoạn. – Ligemer

21

Nếu bạn có thể đối phó với bỏ qua toàn bộ tập tin sau đó

<?xml version="1.0" encoding="UTF-8"?> 

<phpunit> 

    <testsuites> 
     <testsuite name="foo"> 
      <directory>./tests/</directory> 
      <exclude>./tests/path/to/excluded/test.php</exclude> 
       ^------------- 
     </testsuite> 
    </testsuites> 

</phpunit> 
+0

Đây là những gì tôi đã thử, vẫn có 893 bài kiểm tra không có bài kiểm tra '' và 893 với '' – Filype

+0

Các thử nghiệm mất khoảng 20 phút để chạy, có cách nào dễ dàng để xem có bao nhiêu thử nghiệm sẽ chạy? hiện tại, tôi phải chờ cho đến khi hàng đầu tiên được hoàn thành '....... 63/893 (7%)' – Filype

+3

@ Filype: sau đó bạn có thể chỉ định đường dẫn sai. Nó hoạt động tốt cho tôi. Không chắc chắn nếu nó có thể để có được kiểm tra tính. PS: kiểm tra đơn vị không nên chạy quá lâu. Tôi khuyên bạn nên sử dụng chú thích '@ group' và kiểm tra phân tách theo tự nhiên – zerkms

8

Đôi khi rất hữu ích khi bỏ qua tất cả sts từ tập tin cụ thể dựa trên điều kiện tùy chỉnh (s) được định nghĩa là mã php. Bạn có thể dễ dàng làm điều đó bằng cách sử dụng chức năng thiết lập trong đó makeTestSkipped hoạt động như là tốt.

Btw phpunit 5.2 ổn định official documentation khuyên bạn nên sử dụng markTestSkipped làm phương pháp mẫu chứ không phải phương pháp tĩnh. Không kiểm tra xem định nghĩa đã được thay đổi hay chưa.

+0

Lớp '' 'Config''' là gì? Tôi đặt nó ở đâu? – cronfy

+0

@ cronfy nó có thể là bất kỳ phạm vi toàn cầu có thể truy cập lớp (Singleton/Đăng ký mẫu thiết kế) hoặc thậm chí toàn cầu biến trong tập tin bootstrap trong phpunit. Về cơ bản logic là: if ($ testsFromThisFileShouldBeSkipped) {$ this-> markTestSkipped (...); } –

Các vấn đề liên quan