Phpunit Là Gì

Giới thiệu

Biết rằng Unit Test đặc trưng và mang đến nhiều lợi ích là tuy nhiên vấn đề áp dụng, thực hiện như thế nào đến đúng và tác dụng là 1 trong những điều rất khó.

Bạn đang xem: Phpunit là gì

Bài viết này là bài bác bài trước tiên vào loạt bài xích chỉ dẫn thực hiện Unit Test vào PHPhường, được dịch trường đoản cú blog của người sáng tác Juan Treminio. Đây có lẽ là tutorial chi tiết tuyệt nhất mà lại tôi đọc được.Bài dịch có một số trong những update về version của PHPhường với PHPUnit đối với blog của tác giả. Dưới đây là link mang đến những phần khác của tutorial (đã update link khi viết xong):

PHP.. Unit Test 601: Mochồng Methods với Constructor Overriding

Loạt bài xích này vẫn giới thiệu cho chính mình các có mang cơ bạn dạng về testing. Nó đang cho bạn biết vì chưng sao câu hỏi sử dụng static là ko tốt, tại sao Dependency Injection hoàn hảo và tuyệt vời nhất, sự khác hoàn toàn thân mock và stub và có tác dụng vắt như thế nào để yêu thương dòng tkhô cứng màu đỏ, xanh ấy.

Tôi cũng biến thành kể một chút ít mang lại Test-Driven Development (TDD) nhưng lại sẽ không còn triệu tập các vào nó bởi tôi cho rằng nhằm code của người tiêu dùng trở đề nghị testable cùng làm sao nhằm chạy thử nó một bí quyết đúng đắn đang là 1 thử thách đủ lớn rất cần phải học trước tiên, nhưng mà không nhất thiết phải quá quan tâm cho một các bước cách tân và phát triển hoàn toàn khác.

Bài viết sẽ không nói nhiều về việc tại sao chúng ta nên viết chạy thử, tại vì sao testing là cần thiết cùng đông đảo tác dụng của testing. Nếu bạn có nhu cầu được thông óc về phần đa điều ấy, tôi khuyên chúng ta nên đọc qua cuốn nắn Real-World Solutions for Developing High-Quality PHPhường Frameworks & Applications của Sebastian Bergmann cùng xịt thăm blog của đồng bọn tôi Chris Hartjes, The Grumpy Programmer"s blog, fan nhưng mà vẫn la hét vào cộng đồng PHP.. trong không ít năm rằng họ nên viết kiểm tra.Dường như, trên sydneyowenson.com cũng đã có rất nhiều nội dung bài viết bàn về Unit Test, chúng ta khôn cùng buộc phải phát âm qua:

Trước khi bắt đầu

Bài viết đưa sử các bạn sẽ thiết đặt PHPhường. Tôi vô cùng khuim bạn nên sử dụng một sản phẩm công nghệ ảo giành riêng cho môi trường thiên nhiên cải cách và phát triển chũm vày tùy chỉnh nó ngay lập tức bên trên hệ điều hành của khách hàng. Quý Khách rất có thể phát âm qua bài viết Setting Up a Debian VM, Step by Step, hướng dẫn từng bước sử dụng Virtual Box nhằm tùy chỉnh PHP và website hệ thống bên trên Debian, hoặc tham khảo những nội dung bài viết bên trên sydneyowenson.com về áp dụng Docker để chế tác môi trường cải tiến và phát triển.

Chúng ta cũng trở thành áp dụng dòng lệnh để chạy PHPUnit... Nếu bạn đang quen thuộc cùng với bài toán làm hầu như thứ bên trên đồ họa GUI, thì đó cũng là thời hạn cho bạn có tác dụng thân quen với Terminal.

Cài đặt PHPUNIT

PHPUnit 6.2 đề nghị PHP. 7 và các thư viện dom, json và mbstring, thường đã được thiết lập mang định Khi setup PHP. Kiểm tra bởi cách:

php -r "print_r(get_loaded_extensions());"Nếu chưa tồn tại thì download chế tạo, vd so với Ubuntu ^16.04:

subởi apt install php-xml php-json php-mbstringTính năng chế tác báo cáo Code Coverage yêu cầu Xdebug (lí giải setup, nội dung bài viết ra mắt của tác giả) (phiên bản 2.5.0 hoặc new hơn) với thư viện tokenizer (vẫn có sẵn khi sở hữu PHP).

Xem thêm: Đội Hình Zed Đtcl Mùa 4 - Đội Hình Zed Bóng Ma Dtcl Mùa 4

Cách dễ dàng và đơn giản tốt nhất là thiết đặt trải qua Composer. Nếu chúng ta do dự Composer là gì tuyệt biện pháp áp dụng nó thì bạn nên gọi nội dung bài viết, Composer Namespaces in 5 minutes. Nó reviews các bạn với Composer nói phổ biến với cách thực hiện PSR-0 cho Việc autoloading.

Cài đặt:

composer require --dev phpunit/phpunit ^6.2

Chạy PHPUnit

Sau Khi thiết lập xong hãy để ý mang đến tệp tin ./vendor/bin/phpunit. Đây là file dùng làm tiến hành PHPUnit.Chạy lệnh: ./vendor/bin/phpunit, nó sẽ hiển thị toàn bộ những tùy lựa chọn help.
*

Cấu trúc project

Do bọn họ sẽ thực hiện Composer cần đang buộc phải kết cấu project một chút để nó vận động cùng với autoloader. Các file mã nguồn sẽ tiến hành viết vào tlỗi mục src với namespace là App với unit tests sẽ tiến hành viết vào thư mục tests cùng với namespace là Tests.

Update file composer.json của doanh nghiệp như sau:

"require-dev": "phpunit/phpunit": "^6.2" , "autoload": "psr-4": "App\": "src/" , "autoload-dev": "psr-4": "Tests\": "tests/" Sau đó chạy lệnh nhằm update autoloader:

composer dump-autoloaddo vậy kết cấu project của bọn họ nhỏng sau:

phpunit-tut/|-- composer.json|-- composer.lock|-- phpunit.xml|-- src|-- tests|-- vendor

Cấu hình tệp tin phpunit.xml

Quý khách hàng rất có thể sử dụng các tùy lựa chọn trong cái lệnh nhằm cấu hình cho phpunit tuy nhiên gồm 1 cách đơn giản dễ dàng rộng chính là thực hiện tệp tin thông số kỹ thuật phpunit.xml.

Trong folder root phpunit-tut sản xuất file phpunit.xml:

phpunit colors="true"> testsuites> testsuite name="Application Test Suite"> directory>./tests/directory> testsuite> testsuites>phpunit>Đây là tệp tin thông số kỹ thuật dễ dàng tốt nhất, tuy nhiên bao gồm 2 điểm quan trọng:

colors="true" tạo cho kết quả chạy thử được sứt màu sắc./tests/ cho PHPUnit biết nơi lưu những file tests

CONVENTIONS

Trong loạt bài viết này sẽ sở hữu một vài conventions giúp cho bạn thực hiện PHPUnit thuận lợi hơn, mặc dù gồm một trong những convention là không nên.

Cấu trúc cùng thương hiệu file

Convention đầu tiên là về kết cấu file cùng thương hiệu tệp tin. Các file tests nên ánh xạ với các tệp tin mã nguồn khớp ứng vào từng thỏng mục cùng thương hiệu tệp tin nên đặt giống như với tệp tin mã nguồn cộng thêm từ bỏ Test sống sau. lấy một ví dụ, trường hợp họ bao gồm các file mã mối cung cấp như sau:

./src/Foo.php./src/Bar.php./src/Controller/Baz.phpThì những tệp tin tests phải được tổ chức triển khai nlỗi sau:

./tests/FooTest.php./tests/BarTest.php./tests/Controller/BazTest.php

Tên lớp

Tên lớp cần khớp hoàn toàn với thương hiệu file, vấn đề đó cũng buộc phải vận dụng cùng với các file mã mối cung cấp khác.

Tên những method (test)

Các thủ tục trong các lớp thử nghiệm đề xuất được bắt đầu với từ bỏ thử nghiệm (tuy nhiên chúng ta có thể áp dụng annotation