Giới thiệu

Biết rằng Unit Test quan trọng đặc biệt và mang lại các tác dụng là tuy vậy câu hỏi vận dụng, triển khai như thế nào cho đúng và hiệu quả là 1 trong những điều không dễ.

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

Bài viết này là bài xích bài bác đầu tiên vào loạt bài xích trả lời tiến hành Unit Test vào PHP.., được dịch từ blog của người sáng tác Juan Treminio. Đây có lẽ là tutorial cụ thể độc nhất vô nhị mà lại tôi đọc được.Bài dịch gồm một trong những update về version của PHP với PHPUnit so với blog của tác giả. Dưới đấy là link cho những phần không giống của tutorial (đã update link Khi viết xong):

PHPhường Unit Test 601: Mock Methods cùng Constructor Overriding

Loạt bài xích này đang ra mắt cho mình các quan niệm cơ bản về testing. Nó vẫn cho mình biết vì chưng sao vấn đề áp dụng static là ko tốt, tại sao Dependency Injection hoàn hảo nhất, sự biệt lập thân moông xã và stub với làm cho núm như thế nào nhằm yêu thương chiếc thanh hao màu đỏ, xanh ấy.

Tôi cũng trở thành kể một ít mang đến Test-Driven Development (TDD) nhưng lại sẽ không triệu tập nhiều vào nó vị tôi cho là để code của người sử dụng trlàm việc yêu cầu testable cùng làm sao để demo nó một giải pháp đúng đắn sẽ là một trong thách thức đủ Khủng rất cần được học tập trước tiên, nhưng không cần thiết phải vượt quan tâm đến một quy trình trở nên tân tiến trọn vẹn không giống.

Bài viết sẽ không nói nhiều về câu hỏi tại vì sao bạn nên viết chạy thử, vì sao testing là quan trọng với đều lợi ích của testing. Nếu bạn có nhu cầu được thông não về hồ hết điều đó, tôi khuyên ổn bạn nên hiểu qua cuốn Real-World Solutions for Developing High-Quality PHPhường Frameworks và Applications của Sebastian Bergmann cùng ké thăm blog của bạn bè tôi Chris Hartjes, The Grumpy Programmer"s blog, bạn nhưng mà đã la hét vào cộng đồng PHPhường trong vô số nhiều năm rằng chúng ta đề nghị viết thử nghiệm.Dường như, trên clinkerhq.com đã và đang có nhiều nội dung bài viết bàn về Unit Test, các bạn khôn xiết buộc phải hiểu qua:

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

Bài viết trả sử các bạn đã thiết lập PHPhường. Tôi siêu khulặng chúng ta nên sử dụng một vật dụng ảo dành cho môi trường thiên nhiên trở nên tân tiến núm vày thiết lập nó ngay trên hệ quản lý của chúng ta. quý khách hàng hoàn toàn có thể đọc qua bài viết Setting Up a Debian VM, Step by Step, giải đáp mỗi bước thực hiện Virtual Box nhằm thiết lập PHP với web VPS bên trên Debian, hoặc tham khảo những nội dung bài viết trên clinkerhq.com về sử dụng Docker nhằm chế tạo môi trường cải tiến và phát triển.

Chúng ta cũng biến thành thực hiện dòng lệnh nhằm chạy PHPUnit... Nếu nhiều người đang quen thuộc cùng với việc có tác dụng phần lớn lắp thêm bên trên giao diện GUI, thì đây cũng là thời gian cho mình có tác dụng quen cùng với Terminal.

Cài đặt PHPUNIT

PHPUnit 6.2 yêu cầu PHPhường. 7 với những thư viện dom, json với mbstring, hay đã có cài đặt mang định lúc thiết đặt PHP.. Kiểm tra bởi cách:

php -r "print_r(get_loaded_extensions());"Nếu chưa có thì download cung ứng, vd đối với Ubuntu ^16.04:

subởi vì apt install php-xml php-json php-mbstringTính năng chế tác báo cáo Code Coverage thưởng thức Xdebug (chỉ dẫn setup, nội dung bài viết trình làng của tác giả) (phiên bạn dạng 2.5.0 hoặc bắt đầu hơn) và thỏng viện tokenizer (đang gồm sẵn Khi tải PHP).

Xem thêm: Virus Corona: Bệnh Nhân Thứ 21 Gây Bức Xúc Vì Đi Nhiều Và, Việt Nam Ghi Nhận Ca Nhiễm Covid

Cách đơn giản và dễ dàng tuyệt nhất là thiết lập thông qua Composer. Nếu các bạn chần chờ Composer là gì tốt giải pháp áp dụng nó thì chúng ta nên phát âm nội dung bài viết, Composer Namespaces in 5 minutes. Nó giới thiệu các bạn cùng với Composer nói tầm thường với biện pháp sử dụng PSR-0 cho bài toán autoloading.

Cài đặt:

composer require --dev phpunit/phpunit ^6.2

Chạy PHPUnit

Sau Khi thiết đặt chấm dứt hãy chú ý đến file ./vendor/bin/phpunit. Đây là file dùng để thực hiện PHPUnit.Chạy lệnh: ./vendor/bin/phpunit, nó vẫn hiển thị toàn bộ những tùy lựa chọn help.
*

Cấu trúc project

Do chúng ta đã thực hiện Composer yêu cầu đang đề nghị kết cấu project một chút ít nhằm nó vận động với autoloader. Các tệp tin mã mối cung cấp sẽ được viết vào thỏng mục src với namespace là App với unit tests sẽ được viết vào thư mục tests cùng với namespace là Tests.

Update file composer.json của người tiêu dùng nhỏng sau:

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

composer dump-autoloadBởi vậy cấu tạo project của chúng ta nhỏng sau:

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

Cấu hình file phpunit.xml

Quý Khách rất có thể áp dụng những tùy lựa chọn vào dòng lệnh để cấu hình cho phpunit tuy nhiên có 1 cách đơn giản rộng chính là thực hiện tệp tin cấu hình phpunit.xml.

Trong thư mục root phpunit-tut chế tác file phpunit.xml:

phpunit colors="true"> testsuites> testsuite name="Application Test Suite"> directory>./tests/directory> testsuite> testsuites>phpunit>Đây là file cấu hình đơn giản và dễ dàng độc nhất, tuy vậy tất cả 2 điểm quan liêu trọng:

colors="true" khiến cho công dụng test được quẹt color./tests/ mang lại PHPUnit biết nơi lưu giữ những tệp tin 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 áp dụng PHPUnit dễ dàng hơn, tuy vậy tất cả một trong những convention là ko buộc phải.

Cấu trúc với thương hiệu file

Convention đầu tiên là về cấu tạo file cùng tên tệp tin. Các file tests phải ánh xạ với các tệp tin mã nguồn khớp ứng vào từng tlỗi mục cùng tên file nên đặt tương đương với file mã mối cung cấp cộng thêm từ Test ở sau. lấy một ví dụ, nếu như chúng ta bao gồm các tệp tin mã nguồn nhỏng sau:

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

Tên những method (test)

Các phương thức trong những lớp chạy thử đề nghị được ban đầu cùng với tự demo (tuy vậy bạn cũng có thể thực hiện annotation

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *