Có thể đánh dấu một bài kiểm tra là "dự kiến thất bại" với PHPUnit không? Điều này sẽ hữu ích khi thực hiện TDD và bạn muốn phân biệt giữa các kiểm tra thực sự thất bại và các kiểm tra xảy ra thất bại vì mã liên quan chưa được viết.Làm thế nào để chỉ ra rằng một thử nghiệm PHPUnit dự kiến sẽ thất bại?
Trả lời
Tôi nghĩ trong những trường hợp này, nó khá chuẩn để chỉ đơn giản là đánh dấu thử nghiệm là bỏ qua. Các bài kiểm tra của bạn sẽ vẫn chạy và bộ sẽ vượt qua, nhưng nhân viên kiểm tra sẽ cảnh báo bạn về các bài kiểm tra bị bỏ qua.
http://phpunit.de/manual/current/en/incomplete-and-skipped-tests.html
Nếu bạn muốn có một thử nghiệm thất bại nhưng biết rằng thất bại của nó được mong đợi, bạn có thể add a message to the assertion rằng sẽ ra trong các kết quả:
public function testExpectedToFail()
{
$this->assertTrue(FALSE, 'I knew this would happen!');
}
Trong các kết quả:
There was 1 failure:
1) testExpectedToFail(ClassTest)
I knew this would happen!
Điều này sẽ làm cho bộ phần mềm thất bại, mà dường như không phải là kết quả mong muốn. –
Câu hỏi được đề cập đến TDD, trong đó bạn viết các kiểm tra không thành công đối với mã không tồn tại. –
$ this-> fail ('Tôi biết điều này sẽ xảy ra!'); là viết tắt cho điều đó :). –
Tôi thực sự nghĩ rằng đó là một thực tế không tốt, tuy nhiên bạn có thể lừa PHPUnit theo cách này:
/**
* This test will succeed !!!
* @expectedException PHPUnit_Framework_ExpectationFailedException
*/
public function testSucceed()
{
$this->assertTrue(false);
}
sạch thêm:
public function testFailingTest() {
try {
$this->assertTrue(false);
} catch (PHPUnit_Framework_ExpectationFailedException $ex) {
// As expected the assertion failed, silently return
return;
}
// The assertion did not fail, make the test fail
$this->fail('This test did not fail as expected');
}
Đoạn mã trên hoạt động, nhưng tôi phải bắt 'PHPUnit_Framework_AssertionFailedError', không phải là' PHPUnit_Framework_ExpectationFailedException' –
thực hành tốt nếu bạn thực sự thử nghiệm xác nhận đó là tự, ví dụ testAssertEqual_fail: D để bạn có thể kiểm tra các xác nhận tùy chỉnh của mình không thành công. sử dụng, bạn làm điều gì đó sai – aqm
Phương pháp 'đúng' xử lý này là sử dụng $this->markTestIncomplete()
. Điều này sẽ đánh dấu thử nghiệm là không đầy đủ. Nó sẽ trở lại như được thông qua, nhưng nó sẽ hiển thị thông điệp được cung cấp. Xem http://www.phpunit.de/manual/3.0/en/incomplete-and-skipped-tests.html để biết thêm thông tin.
Câu hỏi là về TDD, nơi bạn viết (lý tưởng hoàn thành) kiểm tra trước khi mã chính. Tuy nhiên, 'markTestIncomplete' là khi bạn có một" kiểm tra chưa thực hiện "(http://phpunit.de/manual/3.7/en/incomplete-and-skipped-tests.html bắt đầu bằng cách mô tả một phương pháp thử rỗng cho một bài kiểm tra chưa thực hiện , sau đó giải thích cách dẫn đến thành công sai). –
Nhận xét bằng sáu mươi chín ở trên gần như hoàn hảo cho những gì tôi đang tìm kiếm.
Phương thức fail() hữu ích khi bạn đặt kiểm tra cho một ngoại lệ dự kiến và nếu nó không kích hoạt ngoại lệ bạn muốn thử nghiệm thất bại.
$this->object->triggerException();
$this->fail('The above statement was expected to trigger and exception.');
Tất nhiên triggerException được thay thế bằng thứ gì đó trong đối tượng của bạn.
- 1. làm thế nào để viết thất bại dự kiến?
- 2. Tùy chỉnh thực tế/dự kiến "Giá trị của" chuỗi trong Google thử nghiệm thông điệp đầu ra thất bại
- 3. GitLab sidekiq thử nghiệm thất bại
- 4. Làm cách nào để tôi chỉ ra rằng một thử nghiệm chưa được viết bằng Python?
- 5. Làm thế nào để gọi ipdb khi kiểm tra thất bại trong thử nghiệm django?
- 6. thất bại hudson xây dựng trên thất bại đơn vị thử nghiệm duy nhất
- 7. Làm thế nào để buộc một sự thất bại với phpunit
- 8. Làm thế nào để bạn xử lý các bài kiểm tra đơn vị/hồi quy được dự kiến sẽ thất bại trong quá trình phát triển?
- 9. Các thử nghiệm jUnit hoạt động trong Eclipse, nhưng thất bại trong kiến thức - java.lang.RuntimeException: Stub
- 10. Cách thực hành tốt nhất để chỉ ra rằng yêu cầu máy chủ đã thất bại?
- 11. phpUnit thất bại với lỗi lạ
- 12. Làm thế nào để thất bại trên
- 13. Làm cho việc xây dựng Android jenkins thất bại nếu các thử nghiệm không thành công
- 14. Làm thế nào để làm cho NUnit ngừng thực hiện các thử nghiệm trên thất bại đầu tiên
- 15. Lệnh 'thử nghiệm' của Maven chỉ chạy các kiểm tra thất bại
- 16. PHPUnit: Làm thế nào để khẳng định rằng một lớp mở rộng một lớp khác?
- 17. Làm cho DB thất bại về mặt xác định để thử nghiệm
- 18. Làm thế nào để cho thấy lý do tại sao "thử" thất bại trong python
- 19. Tất cả các thử nghiệm được thông qua, nhưng việc xây dựng bằng tre thất bại với một tuyên bố "Không tìm thấy thử nghiệm thất bại, một lỗi biên dịch có thể xảy ra".
- 20. Làm thế nào tôi có thể làm cho jasmine.js dừng lại sau khi thử nghiệm thất bại?
- 21. Làm thế nào để GNU kiểm tra một cách rõ ràng cho sự thất bại?
- 22. Thử nghiệm nhiều lớp với PHPUnit
- 23. Thất bại khi xây dựng maven-antrun-plugin thất bại
- 24. Làm thế nào để ngăn chặn 'quá thử nghiệm' trong một trường hợp thử nghiệm? (C#/nUnit)
- 25. Làm thế nào để đọc App.Config UnitTest dự án Từ thử nghiệm Với HOSTTYPE ("Nốt ruồi")
- 26. Các thử nghiệm thất bại có nên khiến việc xây dựng liên tục không thành công?
- 27. Làm thế nào để bạn thử nghiệm?
- 28. Chạy thử nghiệm PHPUnit nhiều lần
- 29. Thử nghiệm với thất bại xác suất của các thành phần trong Akka (Scala)
- 30. "Cách tiếp cận Radar" tới Frustum Culling: thất bại trong thử nghiệm đơn giản đầu tiên?
Tôi đoán điều đó sẽ thực hiện. Tôi đã tìm kiếm một cái gì đó giống như sự hỗ trợ cho các khối TODO trong Kiểm tra của Perl :: Thêm mô-đun http://perldoc.perl.org/Test/More.html#Conditional-tests sẽ chạy các thử nghiệm được dự kiến sẽ không thành công và báo cáo nếu họ (bất ngờ) thành công. (PHPUnit dường như chỉ có thể bỏ qua hoàn toàn.) – mjs
Tôi nghĩ rằng Tom B trả lời dưới đây về phương pháp markTestIncomplete là tốt hơn –
Điều đó không làm các trick. Một giải pháp nên đánh dấu kiểm tra là TDD, vì vậy nó sẽ hiển thị 'I' nếu kiểm tra thất bại (như chưa được thực hiện), và quan trọng nhất, nó sẽ thất bại nếu kiểm tra đi vì nó có nghĩa là chúng ta quên xóa nhãn TDD. Tôi không biết làm thế nào để làm các thủ thuật dễ dàng trong phpunit – Alcalyn