development:php:phpunit-test
Table of Contents
1. Cài đặt PHPUnit
$ composer require phpunit/phpunit
2. Cấu trúc thư mục dự án PHPUnit
Cấu trúc thư mục dự án PHPUnit đơn giản:
|- app |- tests |- vendor |- composer.json |- phpunit.xml
Trong đó:
- app: Chứa code ứng dụng.
- test: Chứa code cho kiểm thử ứng dụng.
- vendor: được tạo ra bởi composer, chứa mã nguồn của gói thư viện PHPUnit.
- composer.json: thiết lập các gói thư viện trong ứng dụng với composer.
- phpunit.xml là file cấu hình cho PHPUnit.
Nội dung file phpunit.xml:
<?xml version="1.0" encoding="UTF-8"?> <phpunit colors="true"> <testsuites> <testsuite name="Application Test Suite"> <directory suffix="Test.php">./tests</directory> </testsuite> </testsuites> <php> <includePath>.</includePath> <env name="NOTIFIER_FIREBASE_KEY" value=""/> <env name="NOTIFIER_FIREBASE_TO_DEVICE" value=""/> <env name="NOTIFIER_FIREBASE_TO_TOPIC" value=""/> </php> </phpunit>
Trong đó:
- colors=“true” thiết lập để PHPUnit hiển thị màu trong kết quả test
- ./test/: thư mục test
3. Các quy ước trong PHPUnit
3.1. Cấu trúc thư mục và tên file
Các file test cần được ánh xạ 1-1 với codebase và tên file được thêm chữ Test. Ví dụ:
./app/Foo.php ./app/Bar.php ./app/Controller/Baz.php
Cấu trúc thư mục Test sẽ như sau:
./test/FooTest.php ./test/BarTest.php ./test/Controller/BazTest.php
3.2. Class và phương thức
- Tên class là giống với tên file và phải mở rộng class PHPUnit_Framework_TestCase.
- Phương thức kiểm thử cần được đặt tên với bắt đầu bằng test, tên phương thức phải mô tả được hành động test. Ví dụ, nếu bạn test một phương thức sendNotification(), bạn có thể đặt tên phương thức kiểm thử là testSendNotificationXyz().
- Các phương thức test phải là public, PHPUnit không thể chạy các test với các phương thức protected hoặc private.
4. Code mẫu
File ứng dụng:
- Calculator.php
<?php class Calculator { public function add($a, $b) { return $a + $b; } }
File test:
- CalculatorTest.php
<?php require 'Calculator.php'; class CalculatorTests extends PHPUnit_Framework_TestCase { private $calculator; protected function setUp() { $this->calculator = new Calculator(); } protected function tearDown() { $this->calculator = NULL; } public function testTrueIsTrue() { $foo = true; $this->assertTrue($foo); } public function testAdd() { $result = $this->calculator->add(1, 2); $this->assertEquals(3, $result); } }
Gọi PHPUnit test:
$ vendor/bin/phpunit $ vendor/bin/phpunit tests/FirebaseTest.php $ vendor/bin/phpunit --filter testSendToTopic tests/FirebaseTest.php
5. PHPUnit vs Laravel
development/php/phpunit-test.txt · Last modified: 2024/08/06 06:59 by 127.0.0.1