Hướng dẫn run phpunit
Chuỗi bài viết chuyên sâu về PHPUnit hy vọng mang đến cho không chỉ các PHP Developer mới mà cả những người có nhiều năm kinh nghiệm cái nhìn thân thiện và tổng quan hơn với PHPUnit, đồng thời, giúp cho các Quản lý dự án có những sample tham khảo khi dự án có sử dụng Unit Testing hoặc dự án phát triển theo TDD. Show Bài viết sẽ giới thiệu những khái niệm cốt lõi của testing, cho bạn biết tại sao “dependency injection is king” và sự khác biệt giữa mock và stub là gì? Quan trọng hơn, bạn sẽ dễ chấp nhận các thống kê tồi về phần mềm để nâng cao chất lượng của sản phẩm, cho các developer thói quen sử dụng command và làm cách nào để có màu đỏ hay màu xánh lá. I. PHPUnit là gì?PHPUnit là một khung kiểm thử đơn vị (a unit testing framework) cho ngôn ngữ PHP. Nó cung cấp cho người dùng rất nhiều các class – phương thức giúp cho việc viết các đoạn mã kiểm thử trở nên nhanh chóng và thuận lợi. Từ đó, chúng ta có thể tiết kiệm được nhiều thời gian test. II. Chuẩn bịĐể có môi trường phát triển, bạn nên sử dụng máy ảo (Ví dụ như Docker) để giả lập môi trường máy chủ, thay vì sử dụng ngay trên hệ điều hành của hiện tại, và dùng CMD để chạy các lệnh. Nếu bạn đã quen với việc làm mọi thứ trên giao diện GUI, thì đây là lúc bạn nghĩ đến việc dùng CMD rồi. III. Sử dụng PHPUnit1. Cài đặt PHPUnitCách đơn giản nhất là sử dụng composer, khi đó, bạn nên lưu ý đến PSR-4 Autoloading. Để cài PHPUnit, chúng ta chỉ cần một dòng trong file composer.json
Bạn nên sử dụng XDebug – một trình gỡ lỗi giúp bạn không thành “người tối cổ” khi vẫn dùng echo, print_r, var_dump, và cũng là công cụ tuyệt vời khi làm việc với PHPUnit. Để composer tải xuống thư viện mới, bạn chỉ cần chạy lệnh
2. Chạy PHPUnitBạn chỉ cần gõ: Khi chạy
PHPUnit 3. Cấu trúc của dự ánVì sử dụng composer nên sẽ mất một chút thời gian để thiết lập dự án và khiến mọi thứ hoạt động với autoloader. Đặt namespace có mã nguồn của mình là Cập nhật file
Sau đó, chúng ta chạy lệnh để update composer bằng lệnh
4. Thiết lập phpunit.xmlKhi chạy PHPUnit nó sẽ chạy với cấu hình mặc định. Bạn có thể ghi đè các giá trị mặc định thông qua dòng lệnh. Nhưng cách tốt hơn cả là cấu hình thông qua file phpunit.xml. Trong thư mục gốc của dự án ta tạo một file phpunit.xml như sau:
Đây là file cấu hình đơn giản nhưng cực kỳ quan trọng.
Tất cả các unit testing của bạn phải đặt trong thư mục 5. ConventionConvention giúp cho việc teamwork, hoặc maintain,… dễ dàng hơn. File structure và file nameQui ước đầu tiên của chúng ta là về cấu
trúc file và tên file. Ví dụ:
Thì ta có các files mã nguồn kiểm thử như sau:
Class namesClass name phải giống hệt tên file. Điều này áp dung cho tất cả các file .php trong thư mục app, và tests Method namesTên phương thức kiểm thử bắt đầu bằng test. Tên phương thức nên mô tả về những gì đang được kiểm thử, bao gồm tên của phương thức được kiểm thử, và không được viết tắt. Ví dụ: nếu bạn đang kiểm thử một phương thức được gọi Độ dài của tên phương thức kiểm thử ở đây là một lợi thế. Bởi khi có nhiều kiểm thử không thành công, ta sẽ dễ dàng biết chính xác những gì thất bại nhờ vào tên phương thức, từ đó có thể nhanh chóng tiến hành sửa lỗi. Các Method kiểm thử phải là publicPHPUnit không thể chạy các phương thức protect hoặc private nên chúng phải là public. Tất cả các phương thức helpers cũng phải public. Chúng ta không xây dựng public API mà chỉ muốn viết unit test nên không cần lo lắng về khả năng truy cập của nó. Kế thừa PHPUnitTất cả các class kiểm thử phải extends class \PHPUnit\Framework\TestCase hoặc một class có extends \PHPUnit\Framework\TestCase IV. Chạy thửKiểm thử đầu tiên của chúng ta sẽ ngắn và có thể là “ngớ ngẩn”, nhưng nó sẽ ở mức tối thiểu cần thiết cho một kiểm thử. Tạo mới một file:
Nội dung này không có gì đặc biệt, cho thấy ta đã tuân
thủ theo 3 quy tắc bên trên.
Sau đây là mã kiểm thử của nó.
Từ thư mục gốc dự án ta chạy lệnh: Bạn sẽ nhìn thấy thanh màu xanh (lá) hy vọng. Bạn đã chạy một test và xác nhận duy nhất một assertion. V. Kết luậnVậy là ta đã
hoàn thành cài đặt PHPUnit bằng composer, thiết lập cấu hình cho PHPUnit, và chạy một kiểm thử đầu tiên. Phần tiếp theo ta sẽ tìm hiểu sâu hơn về các assertion, và dataProvider. Hẹn gặp lại các bạn ở những bài viết sau! Trịnh Văn Thành – CO-WELL Asia |