Thử nghiệm PHPUnit là gì?

PHPUnit cung cấp một khung đơn giản để tạo bộ thử nghiệm nhằm tự động kiểm tra các hàm và lớp. PHPUnit được lấy cảm hứng từ JUnit, được tạo bởi Kent Beck và Erich Gamma như một công cụ cho Lập trình cực đoan. Một trong những quy tắc của XP là kiểm tra các thành phần phần mềm nhỏ thường xuyên và sớm nhất có thể, bằng cách này, bạn sẽ không phải sửa các lỗi và lỗi trong API trong khi thiết lập và kiểm tra các ứng dụng lớn hơn phụ thuộc vào lớp. Mặc dù kiểm tra đơn vị là một trong những quy tắc cơ bản trong XP, nhưng bạn không cần phải chuyển sang XP để hưởng lợi từ PHPUnit. PHPUnit độc lập như một công cụ tốt để kiểm tra các lớp hoặc một tập hợp các chức năng và sẽ giảm bớt chu kỳ phát triển của bạn và giúp bạn tránh các phiên gỡ lỗi vô tận

Thông thường, bạn sẽ viết một lớp, thực hiện một số bài kiểm tra phi hệ thống bằng cách sử dụng echo() hoặc var_dump(). Sau này, bạn sử dụng lớp trong ứng dụng của mình và hy vọng mọi thứ đều ổn. Để hưởng lợi từ PHPUnit, bạn nên suy nghĩ lại về quy trình. Cách tốt nhất là làm điều này

  • 1. thiết kế lớp/API của bạn

  • 2. tạo một bộ thử nghiệm

  • 3. triển khai lớp/API

  • 4. chạy bộ thử nghiệm

  • 5. sửa lỗi hoặc lỗi và quay lại #4

Có vẻ như điều này sẽ đòi hỏi nhiều thời gian, nhưng ấn tượng này là sai. Tạo bộ thử nghiệm bằng PHPUnit chỉ cần vài phút và chạy bộ thử nghiệm chỉ vài giây

Hãy bắt đầu với một ví dụ nhỏ. một lớp chuỗi. Trước tiên, chúng tôi tạo một loạt các khai báo hàm để hoạt động trên một chuỗi

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
2

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
3

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
4

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
5

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
6

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
7

Bây giờ chúng ta có thể tạo một bộ kiểm tra, kiểm tra mọi chức năng của lớp chuỗi của bạn. Một bộ kiểm tra là lớp PHP bình thường được kế thừa từ PHPUnit_TestCase chứa các hàm kiểm tra, được xác định bởi một 'kiểm tra' hàng đầu trong tên hàm. Trong chức năng kiểm tra, giá trị dự kiến ​​phải được so sánh với kết quả của chức năng để kiểm tra. Kết quả của phép so sánh này phải ủy quyền cho một chức năng của họ khẳng định*(), quyết định xem một chức năng có đạt hay không đạt bài kiểm tra

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
0

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
1

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
2

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
3

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
4

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
5

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
6

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
7

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
8

Bây giờ, chúng ta có thể chạy thử nghiệm đầu tiên. Đảm bảo rằng tất cả các đường dẫn đều chính xác và sau đó thực hiện chương trình PHP này

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
9

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
00

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
01

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
02

Nếu bạn gọi tập lệnh này từ dòng lệnh, bạn sẽ nhận được đầu ra sau


TestCase stringtest->testtostring() không thành công. dự kiến đúng, thực tế sai
TestCase stringtest->testcopy() không thành công. dự kiến , đối tượng thực tế
TestCase stringtest->testadd() không thành công. mong đợi đúng, thực tế sai

Mọi hàm đều không vượt qua được bài kiểm tra, bởi vì các hàm chuỗi của bạn không trả về giá trị mà chúng tôi đã xác định là giá trị mong đợi

Nếu bạn muốn gọi tập lệnh thông qua trình duyệt của mình, bạn phải đặt tập lệnh vào đúng trang html và gọi $result->toHTML () thay vì $result->toString()

Ok, hãy bắt đầu với việc triển khai lớp chuỗi của chúng tôi

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
2

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
3

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
4

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
06

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
07

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
08

Việc triển khai hoàn tất và chúng ta có thể chạy thử nghiệm lại

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
0php -f chuỗi kiểm tra. php_______0

D'oh. bài kiểm tra cuối cùng thất bại. Chúng tôi đã mắc lỗi đánh máy. Thay đổi dòng 16 trong

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
09 thành

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
90

và chạy thử lại

TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
0php -f chuỗi kiểm tra. php
TestCase stringtest->testtostring() passed
TestCase stringtest->testcopy() passed
TestCase stringtest->testadd() failed: expected true, actual false
9

Mọi thứ bây giờ đều ổn

Có vẻ như rất nhiều công việc để thử nghiệm ba chức năng đơn giản phải không? . Hãy nghĩ về các API lớn hơn, phức tạp hơn như trừu tượng hóa cơ sở dữ liệu hoặc các lớp giỏ hàng trong ứng dụng cửa hàng. PHPUnit là một công cụ tuyệt vời để phát hiện lỗi trong quá trình triển khai lớp của bạn

Thường thì bạn sẽ muốn triển khai lại hoặc cấu trúc lại một lớp lớn được sử dụng trong một số ứng dụng khác nhau. Nếu không có bộ kiểm tra, khả năng bạn vi phạm thứ gì đó trong một trong các ứng dụng phụ thuộc vào lớp của bạn là rất cao. Nhờ các bài kiểm tra đơn vị, bạn có thể tạo một bộ kiểm tra cho lớp của mình, sau đó triển khai lại lớp của bạn với sự an toàn khi biết rằng miễn là lớp mới vượt qua các bài kiểm tra, các ứng dụng phụ thuộc vào lớp sẽ hoạt động

Phần mềm kiểm thử đơn vị là gì?

Kiểm tra đơn vị được định nghĩa là một loại kiểm tra phần mềm trong đó các thành phần riêng lẻ của phần mềm được kiểm tra . Kiểm thử đơn vị sản phẩm phần mềm được thực hiện trong quá trình phát triển ứng dụng. Một thành phần riêng lẻ có thể là một chức năng riêng lẻ hoặc một thủ tục.

Thử nghiệm đơn vị trong laravel là gì?

Các bài kiểm tra đơn vị là các bài kiểm tra tập trung vào một phần rất nhỏ, tách biệt trong mã của bạn . Trên thực tế, hầu hết các bài kiểm tra đơn vị có thể tập trung vào một phương pháp duy nhất. Các kiểm tra trong thư mục kiểm tra "Đơn vị" của bạn không khởi động ứng dụng Laravel của bạn và do đó không thể truy cập cơ sở dữ liệu của ứng dụng hoặc các dịch vụ khung khác.

Đồ đạc PHPUnit là gì?

Một trong những phần tốn thời gian nhất của bài kiểm tra viết là viết mã để thiết lập thế giới ở trạng thái đã biết và sau đó đưa nó trở lại trạng thái ban đầu khi bài kiểm tra được hoàn thành. . Trạng thái đã biết này được gọi là vật cố định của bài kiểm tra. . This known state is called the fixture of the test.

Dịch hại PHP là gì?

Pest là Khung PHP thử nghiệm mới do Nuno Maduro phát triển . Mặc dù bản thân Pest được xây dựng dựa trên PHPUnit, khung kiểm tra PHP phổ biến và được áp dụng rộng rãi, nhưng Pest nhằm mục đích cung cấp trải nghiệm tốt hơn cho việc viết bài kiểm tra. Triết lý thật đơn giản.