Cách test code php

Giới thiệu

Biết rằng Unit Test quan trọng với mang đến các tác dụng là tuy vậy bài toán vận dụng, triển khai thế nào cho đúng với công dụng là 1 trong điều rất khó.

Bạn đang xem: Cách test code php

Bài viết này là bài bác bài xích đầu tiên vào loạt bài bác chỉ dẫn triển khai Unit Test vào PHPhường, được dịch tự blog của tác giả Juan Treminio. Đây chắc hẳn rằng là tutorial chi tiết duy nhất cơ mà tôi hiểu được.Bài dịch có một vài update về version của PHPhường và PHPUnit đối với blog của tác giả. Dưới đấy là liên kết mang đến những phần khác của tutorial (đang update liên kết Lúc viết xong):

PHPhường Unit Test 601: Moông xã Methods và Constructor Overriding

Loạt bài bác này đang ra mắt cho bạn những tư tưởng cơ bản về testing. Nó đang cho bạn biết vì sao câu hỏi áp dụng static là không giỏi, tại vì sao Dependency Injection tuyệt vời, sự khác hoàn toàn giữa mock cùng stub với làm cho núm làm sao để yêu thương loại thanh hao màu đỏ, xanh ấy.

Tôi cũng biến thành kể một chút ít đến Test-Driven Development (TDD) nhưng mà sẽ không còn tập trung nhiều vào nó bởi vì tôi nghĩ rằng nhằm code của công ty trở bắt buộc testable và làm thế nào nhằm chạy thử nó một phương pháp đúng chuẩn vẫn là 1 thử thách đủ mập rất cần phải học trước tiên, mà lại không cần phải quá quyên tâm đến một các bước cải tiến và phát triển hoàn toàn khác.

Bài viết sẽ không còn nói nhiều về câu hỏi tại vì sao chúng ta nên viết demo, vì sao testing là quan trọng cùng số đông tiện ích của testing. Nếu bạn muốn được thông não về đầy đủ điều ấy, tôi khuim bạn nên phát âm qua cuốn nắn Real-World Solutions for Developing High-Quality PHP.. Frameworks và Applications của Sebastian Bergmann cùng gạnh thăm blog của bạn thân tôi Chris Hartjes, The Grumpy Programmer"s blog, tín đồ mà vẫn la hét vào xã hội PHPhường trong vô số nhiều năm rằng họ bắt buộc viết demo.Ngoài ra, bên trên obatambeienwasirherbal.com đã và đang có khá nhiều bài viết bàn về Unit Test, các bạn hết sức bắt buộc phát âm qua:

Trước lúc bắt đầu

Bài viết mang sử bạn đã thiết lập PHP.. Tôi khôn xiết khulặng chúng ta nên thực hiện một thiết bị ảo giành cho môi trường phát triển cố bởi tùy chỉnh cấu hình nó ngay lập tức bên trên hệ điều hành quản lý của người tiêu dùng. quý khách hàng rất có thể hiểu qua nội dung bài viết Setting Up a Debian VM, Step by Step, hướng dẫn từng bước một áp dụng Virtual Box nhằm tùy chỉnh PHP và website hệ thống bên trên Debian, hoặc tìm hiểu thêm các bài viết bên trên obatambeienwasirherbal.com về thực hiện Docker nhằm chế tác môi trường xung quanh phát triển.

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

Cài đặt PHPUNIT

PHPUnit 6.2 đề xuất PHP.. 7 với những tlỗi viện dom, json cùng mbstring, hay đã được cài đặt mặc định Lúc thiết lập PHPhường. Kiểm tra bằng cách:

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

suvì apt install php-xml php-json php-mbstringTính năng tạo report Code Coverage những hiểu biết Xdebug (hướng dẫn setup, bài viết giới thiệu của tác giả) (phiên phiên bản 2.5.0 hoặc new hơn) và thư viện tokenizer (vẫn có sẵn Lúc sở hữu PHP).

Xem thêm: Fkn Là Gì, Nghĩa Của Từ Fkn, Fucking Trong Tiếng Tiếng Việt

Cách dễ dàng và đơn giản tốt nhất là cài đặt thông qua Composer. Nếu bạn băn khoăn Composer là gì tốt giải pháp thực hiện nó thì chúng ta nên phát âm bài viết, Composer Namespaces in 5 minutes. Nó ra mắt bạn với Composer nói chung cùng bí quyết thực hiện PSR-0 mang đến vấn đề autoloading.

Cài đặt:

composer require --dev phpunit/phpunit ^6.2

Chạy PHPUnit

Sau lúc setup hoàn thành hãy chăm chú mang đến tệp tin ./vendor/bin/phpunit. Đây là tệp tin dùng để làm xúc tiến PHPUnit.Chạy lệnh: ./vendor/bin/phpunit, nó sẽ hiển thị toàn bộ các tùy lựa chọn help.
*

Cấu trúc project

Do chúng ta vẫn sử dụng Composer phải đang bắt buộc cấu trúc project một ít để nó vận động với autoloader. Các tệp tin mã mối cung cấp sẽ được viết vào tlỗi mục src với namespace là App và unit tests sẽ được viết vào tlỗi mục tests cùng với namespace là Tests.

Update tệp tin composer.json của khách hàng như sau:

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

composer dump-autoloaddo vậy cấu trúc project của họ nlỗi sau:

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

Cấu hình file phpunit.xml

Bạn hoàn toàn có thể sử dụng các tùy lựa chọn trong mẫu lệnh nhằm cấu hình cho phpunit tuy vậy gồm một cách đơn giản và dễ dàng rộng sẽ là sử dụng file thông số kỹ thuật phpunit.xml.

Trong folder root phpunit-tut chế tác tệp tin 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 đơn giản tuyệt nhất, tuy nhiên gồm 2 điểm quan lại trọng:

colors="true" tạo cho tác dụng test được thoa màu./tests/ mang đến PHPUnit biết khu vực giữ các file tests

CONVENTIONS

Trong loạt bài viết này sẽ có một số trong những conventions góp cho chính mình thực hiện PHPUnit thuận tiện hơn, tuy vậy có một vài convention là không phải.

Xem thêm: ung thư cổ tử cung tiếng anh

Cấu trúc với tên file

Convention đầu tiên là về cấu trúc tệp tin với tên tệp tin. Các file tests buộc phải ánh xạ cùng với các file mã mối cung cấp tương xứng vào từng tlỗi mục cùng thương hiệu tệp tin nên được sắp xếp như thể với tệp tin mã mối cung cấp cộng thêm tự Test sinh hoạt sau. lấy ví dụ, nếu họ có các file mã nguồn nlỗi sau:

./src/Foo.php./src/Bar.php./src/Controller/Baz.phpThì những tệp tin tests đề nghị đượ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 yêu cầu khớp hoàn toàn với tên file, vấn đề này cũng phải vận dụng cùng với các file mã nguồn không giống.

Tên các method (test)

Các cách thức trong số lớp thử nghiệm bắt buộc được bước đầu với trường đoản cú demo (tuy nhiên chúng ta cũng có thể sử dụng annotation

Chuyên mục: