2010-09-24 22 views
22

Mỗi khi tôi chạy một bài kiểm tra đơn vị duy nhất trong PHPUnit, một báo cáo bảo hiểm mã cũng được tạo ra. Tôi có một máy tính cũ ở đây tại nơi làm việc, và nếu tôi có thể vô hiệu hóa phạm vi mã khi tôi không cần nó, điều đó sẽ làm giảm căng thẳng trên CPU của tôi.Có cách nào để vô hiệu hóa phạm vi mã trong PHPUnit cho một thử nghiệm không?

Có cách nào để vô hiệu hóa phạm vi mã trên cơ sở mỗi lần kiểm tra không? Tôi không thể tìm thấy bất kỳ chuyển đổi dòng lệnh nào có thể thực hiện được.

+0

Bạn đã thử thực hiện nó trong cấu hình XML chưa? –

Trả lời

22

Làm thế nào về thực hiện một bản sao của phpunit.xml của bạn, loại bỏ các <logging> đoạn thơ từ nó, sau đó thực hiện:

phpunit --configuration new.xml 
+0

Chà, tôi không nhận ra điều đó thật đơn giản. Tôi đoán tôi có thể sử dụng một tập tin cấu hình khác nhau khi tôi đang chạy một thử nghiệm duy nhất so với khi tôi đang chạy toàn bộ bộ. –

+3

Tôi đã kết thúc việc phân tách tệp xml của mình thành ... bây giờ nó chạy nhanh như chớp. Ước gì tôi biết điều này sớm hơn! –

+0

Tôi có một kịch bản lệnh shell chạy PHPunit với cấu hình 'phpunit-FAST.xml' - nó không thực hiện bảo vệ mã và cũng loại trừ một số kiểm tra lớn hơn, được đánh dấu bằng '@groupname' trong nguồn. Nó chạy hầu hết các bài kiểm tra của tôi trong 2 giây. Với mức độ phù hợp và tất cả các thử nghiệm khác, 2,5 phút. –

30

Vì đây là một trong những kết quả đầu google, tôi nghĩ rằng nó làm cho tinh thần để chỉ ra rằng kể từ phiên bản 4.8 PHPUnit giờ đây hỗ trợ tùy chọn --no-coverage để ghi đè cấu hình xml của bạn.

https://github.com/sebastianbergmann/phpunit/blob/master/ChangeLog-4.8.md

+1

Đây phải là câu trả lời được chấp nhận – OnIIcE

+0

Không, đây không phải là câu trả lời được chấp nhận. Câu hỏi đặt ra là "một cách để vô hiệu hóa phạm vi mã trong PHPUnit cho một thử nghiệm duy nhất" và không phải để vô hiệu hóa phạm vi mã cho một lần chạy duy nhất của tất cả các thử nghiệm. –

+1

@SebastianBergmann Câu hỏi là khó hiểu, vì nó nói rằng ông muốn vô hiệu hóa bảo hiểm mã cho một thử nghiệm duy nhất khi anh ta không cần nó kể từ khi ông có một máy tính cũ. Một dòng lệnh cũng được đề cập. Tôi không rõ ràng nhưng ý tưởng là sử dụng '--no-coverage' khi chạy một thử nghiệm (mà tôi cho rằng người dùng đang thực hiện) –

1

Bạn có thể chú thích một lớp thử nghiệm hoặc phương pháp thử nghiệm với @coversNothing. (Các) thử nghiệm sau đó không đóng góp vào báo cáo bảo hiểm mã. Tuy nhiên, dữ liệu bảo hiểm mã sẽ vẫn được thu thập (làm chậm quá trình thực thi). Tôi dự định tối ưu hóa điều này trong tương lai.

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