2013-08-15 37 views
10

Tôi đang tìm cách chạy testcase nhiều lần với cài đặt khác.Chạy thử nghiệm PHPUnit nhiều lần

Tôi đang thử nghiệm lớp truy cập cơ sở dữ liệu (hàng tá phương pháp thử nghiệm) và muốn thử nghiệm trong "chế độ bình thường" và sau đó trong "chế độ gỡ lỗi". Cả hai chế độ phải tạo ra kết quả kiểm tra giống nhau.

Có khả năng nào để thực hiện điều đó trong cài đặt testcase không? Hoặc ghi đè phương thức run()? Tôi không muốn viết bài kiểm tra hai lần, tất nhiên :)

Cảm ơn bạn

chỉnh sửa: GOT IT!

public function run(PHPUnit_Framework_TestResult $result = NULL) 
{ 
    if ($result === NULL) { 
     $result = $this->createResult(); 
    } 

    /** 
    * Run the testsuite multiple times with different debug level 
    */ 
    $this->debugLevel = 0; 
    print "Setting debug level to: " . $this->debugLevel . PHP_EOL; 
    $result->run($this); 

    $this->debugLevel = 8; 
    print "Setting debug level to: " . $this->debugLevel . PHP_EOL; 
    $result->run($this); 

    $this->debugLevel = 16; 
    print "Setting debug level to: " . $this->debugLevel . PHP_EOL; 
    $result->run($this); 

    return $result; 
} 

public function setUp() 
{ 
    parent::setUp(); 
    $this->myclass->setOptions('debug', $this->debugLevel); 
} 
+8

Hãy xem các hàm '@ dataProvider' phát ra các tập dữ liệu thử nghiệm. – Sven

+0

Tôi biết các dataProviders sử dụng :) Tôi chỉ muốn thay đổi một thiết lập đơn giản của lớp và sau đó chỉ cần chạy tất cả các phương pháp thử nghiệm một lần nữa. Một cái gì đó như: run(); $ class-> setDebug (true); chạy(); –

+0

Ok, tôi cho rằng đây không phải là trường hợp thông thường. Bạn đã thử mở rộng lớp thử nghiệm ban đầu và thay đổi một điều trong 'setUp()'. Điều này sẽ kế thừa tất cả mã thử nghiệm dưới một nhãn mới và chạy công cụ hai lần. – Sven

Trả lời

-1

PHPUnit cung cấp trang trí thử nghiệm. documentation thực sự đã lặp lại trang trí làm ví dụ về việc cần làm với trang trí. Người trang trí sẽ là cách hoàn hảo để thực hiện hành vi theo cách tái sử dụng mà không phụ thuộc vào phân lớp PHPUnit_Framework_TestCase.

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