2012-12-05 33 views
9

Tôi muốn tiếp tục chạy thử nghiệm đơn vị của mình ở chế độ nghiêm ngặt để tôi biết bất kỳ thử nghiệm đặc biệt dài nào một cách dễ dàng, nhưng đồng thời thời gian chờ mặc định là 1s không đủ. Tôi có thể thay đổi nó cho tất cả các bài kiểm tra? Tôi biết tôi có thể đặt thời gian chờ cho mỗi lớp (và các bài kiểm tra riêng lẻ) bằng cách sử dụng chú thích @short/@medium/@long, nhưng có điều gì đó giống như vậy cho tất cả các bài kiểm tra không? Có lẽ trong phpunit.xml?PHPUnit chế độ nghiêm ngặt - cách thay đổi thời gian chờ mặc định

Điều này tránh PHP_Invoker_TimeoutException: Execution aborted after 1 second điều đó xảy ra một lần trong một thời gian.

+0

có thể trùng lặp: http://stackoverflow.com/questions/10520464/what-does-phpunit-strict-mode- do – Smar

+0

Tôi đã xem xét điều đó, nhưng nó không trả lời cách thay đổi cài đặt này trên toàn cầu - mà không cần chỉnh sửa mã nguồn PHPUnit, mà tôi muốn tránh. –

+0

Bạn chỉ có thể làm điều đó từ phpunit.xml. Không có tệp cấu hình chung cho PHPUnit theo như tôi biết. – Smar

Trả lời

25

Tùy chọn có thể được bật bằng cách đặt thời gian mong muốn trong phpunit.xml. Thời gian bằng giây.

Ví dụ:

<phpunit 
    strict="true" 
    timeoutForSmallTests="1" 
    timeoutForMediumTests="5" 
    timeoutForLargeTests="10" 
> 
// test suites 
</phpunit> 

Các xét nghiệm có thể được đánh dấu là trung bình hoặc lớn bằng cách đánh dấu chức năng kiểm tra thực tế như sau

/** 
* @medium 
*/ 
public function testTestThing() { 
    $this->assertTrue(false); 
} 

EDIT: modern PHPUnit versions không làm những timeout nữa, và cũng có thể thay đổi hành vi của chế độ nghiêm ngặt thường bằng cách giới thiệu các cờ riêng biệt cho mỗi điều previously covered by strict mode:

beStrictAboutTestsThatDoNotTestAnything="true" 
checkForUnintentionallyCoveredCode="true" 
beStrictAboutOutputDuringTests="true" 
beStrictAboutTestSize="true" 
beStrictAboutChangesToGlobalState="true" 

Cảnh báo không liên quan: nó cũng thay đổi đường dẫn đến thử nghiệm trong cấu hình XML tương ứng với tệp cấu hình XML, trái ngược với mặc định cũ rằng đường dẫn phải liên quan đến thư mục làm việc hiện tại. phương pháp

5

Hoặc bạn có thể thiết lập chúng cũng trong thiết lập của bạn() như thế này:

$this->getTestResultObject()->setTimeoutForSmallTests(1); 
$this->getTestResultObject()->setTimeoutForMediumTests(5); 
$this->getTestResultObject()->setTimeoutForLargeTests(10); 
Các vấn đề liên quan