Hướng dẫn phpunit exclude - phpunit loại trừ

Có một số cách để không chạy một bài kiểm tra cụ thể - đưa nó vào danh sách đen để nó không bao giờ chạy có thể không phải là cách - vì thay đổi nó có nghĩa là chỉnh sửa danh sách đen và bạn sẽ thường xuyên đưa nó vào và ra khỏi điều khiển phiên bản .

Có một số cách khác có thể phù hợp hơn:

Nếu một bài kiểm tra chưa sẵn sàng để chạy:

$this->markTestIncomplete('This test has not been implemented yet.');

Nếu có một lý do bên ngoài, nó không nên chạy, hãy bỏ qua nó:

if (!extension_loaded('mysqli')) {
    $this->markTestSkipped('The MySQLi extension is not available.');
}

Bạn cũng có thể đưa nó vào hàm

if (!extension_loaded('mysqli')) {
    $this->markTestSkipped('The MySQLi extension is not available.');
}
0, vì vậy nó sẽ bỏ qua tất cả các bài kiểm tra trong một lớp kiểm tra.

Bạn có thể thực hiện một bài kiểm tra phụ thuộc vào một trước đó thành công:

public function testEmpty()
{
    $stack = array();
    $this->assertTrue(empty($stack));
    return $stack;   // also sends this variable to any following tests - if this worked
}
/**
 * only runs if testEmpty() passed
 *
 * @depends testEmpty
 */
public function testPush(array $stack)
{
}

Chú thích @group -Name- là một trong những cách tốt nhất để dừng cụ thể hoặc chạy một nhóm thử nghiệm

/**
 * @group database
 * @group remoteTasks
 */
public function testSomething()
{
}

if (!extension_loaded('mysqli')) {
    $this->markTestSkipped('The MySQLi extension is not available.');
}
1 hiện có hai nhóm và nếu được thêm vào dòng lệnh (hoặc trong tham số config.xml)
if (!extension_loaded('mysqli')) {
    $this->markTestSkipped('The MySQLi extension is not available.');
}
2. Nó sẽ không được chạy. Tương tự như vậy, bạn chỉ có thể chạy các bài kiểm tra thuộc về một nhóm cụ thể - nói được đặt tên theo tính năng hoặc báo cáo lỗi.

Tôi muốn loại trừ hoặc bao gồm một số bài kiểm tra nhất định từ các bộ việc kiểm tra. Tôi muốn có một số quyền kiểm soát điều này thông qua các chú thích/nhóm thay vì đặt tên các tệp hoặc thư mục cụ thể trong

if (!extension_loaded('mysqli')) {
    $this->markTestSkipped('The MySQLi extension is not available.');
}
3

Tôi đã thử một cái gì đó như thế này, nhưng dường như nó đang bỏ qua

if (!extension_loaded('mysqli')) {
    $this->markTestSkipped('The MySQLi extension is not available.');
}
4 và/hoặc
if (!extension_loaded('mysqli')) {
    $this->markTestSkipped('The MySQLi extension is not available.');
}
5


    
        Unit
    
    
        Integration/
        
            first-round          
        
    
    
        Integration/
        
            first-round
        
    

Tôi không muốn chuyển các bài kiểm tra đến các thư mục khác nhau chỉ để phù hợp với điều này và tôi không muốn gọi phpunit nhiều lần từ CLI, tôi hy vọng tôi có thể đạt được kết quả mong muốn thông qua cấu hình XML.

Đã hỏi ngày 12 tháng 3 năm 2018 lúc 23:47Mar 12, 2018 at 23:47

Hướng dẫn phpunit exclude - phpunit loại trừ

Sam Anthonysam AnthonySam Anthony

1.5592 Huy hiệu vàng20 Huy hiệu bạc39 Huy hiệu Đồng2 gold badges20 silver badges39 bronze badges

3

Ok, nhìn vào các tài liệu nên là nơi đầu tiên bạn nhìn

https://phpunit.de/manual/current/en/appendixes.configuration.html

Bạn cần một phần tử

if (!extension_loaded('mysqli')) {
    $this->markTestSkipped('The MySQLi extension is not available.');
}
6 với
if (!extension_loaded('mysqli')) {
    $this->markTestSkipped('The MySQLi extension is not available.');
}
7 bên trong nó. Vậy bạn có ở đâu


     first-round

Bạn nên có


    
        first-round
   

Nó không thực sự nói nếu nó nên đi vào bên trong

if (!extension_loaded('mysqli')) {
    $this->markTestSkipped('The MySQLi extension is not available.');
}
8 và tôi không bao giờ sử dụng nó nhưng tôi chắc chắn nếu bạn nhìn vào tài liệu bạn nên tìm một số ví dụ.

Đã trả lời ngày 13 tháng 3 năm 2018 lúc 0:02Mar 13, 2018 at 0:02

Hướng dẫn phpunit exclude - phpunit loại trừ

ArtisticphoenixartisticphoenixArtisticPhoenix

21.1k2 Huy hiệu vàng21 Huy hiệu bạc35 Huy hiệu Đồng2 gold badges21 silver badges35 bronze badges

3

Trong trường hợp của tôi, tôi đã nhóm là

if (!extension_loaded('mysqli')) {
    $this->markTestSkipped('The MySQLi extension is not available.');
}
9


và sau đó chạy phpunit từ thiết bị đầu cuối như

phpunit --exclude data

Đã trả lời ngày 22 tháng 4 năm 2020 lúc 14:57Apr 22, 2020 at 14:57

Có một cuộc thảo luận trong một vấn đề với các nhóm trong repo phpunit trong đó Sebastian Bergmann cung cấp một tệp ví dụ phpunit.xml.

Vui lòng tìm bên dưới một đoạn trích với ví dụ về cách đặt nhóm và bao gồm (loại trừ) các yếu tố::


 
  Test.php
 

 
  
   one
  
 

Hướng dẫn phpunit exclude - phpunit loại trừ

Đã trả lời ngày 2 tháng 7 năm 2021 lúc 2:56Jul 2, 2021 at 2:56