PHPUnit tests
การเขียน PHPUnit tests เป็นส่วนสำคัญของกระบวนการพัฒนาซอฟต์แวร์ที่ช่วยให้คุณตรวจสอบและยืนยันว่าโค้ดของคุณทำงานได้ตามคาดหวังและไม่มีข้อผิดพลาดที่ไม่ตรงตามตั้งใจ ด้วย PHPUnit ซึ่งเป็นเครื่องมือสำหรับเขียนและเรียกใช้งานเทสในภาษา PHP คุณสามารถประเมินคุณภาพของโค้ดและรักษาความเสถียรได้โดยใช้การทดสอบหลากหลายรูปแบบ
เหตุผลที่คุณควรเขียน PHPUnit tests
- การป้องกันข้อผิดพลาด (Bugs Prevention): การเขียน unit tests ช่วยตรวจสอบความถูกต้องของโค้ดก่อนที่จะมีการนำไปใช้งานจริง นั่นหมายความว่าคุณสามารถตรวจหาข้อผิดพลาดและปรับปรุงโค้ดก่อนที่จะมีการปล่อยให้ผู้ใช้งานใช้งานจริง นี้ช่วยลดเวลาและค่าใช้จ่ายในการแก้ไขข้อผิดพลาดที่เกิดขึ้นในระหว่างการใช้งานจริง.
- การบำรุงรักษา (Maintenance): การมี unit tests ช่วยให้คุณทราบถึงผลกระทบของการเปลี่ยนแปลงในโค้ดที่มีอยู่และทำให้คุณสามารถปรับปรุงหรือปรับแก้โค้ดเพื่อให้สอดคล้องกับความต้องการใหม่ได้อย่างมีความมั่นใจ.
- การออกแบบ (Design): เขียน unit tests ช่วยให้คุณตรวจสอบว่าโค้ดของคุณมีการออกแบบที่ดีและสอดคล้องกับความต้องการ นี่ช่วยลดความเสี่ยงที่โค้ดอาจกลายเป็นโค้ดที่ซับซ้อนและยากต่อการบำรุงรักษาในอนาคต.
- การเปิดโอกาสในการพัฒนา (Development Opportunities): เขียน tests ช่วยให้คุณทราบถึงว่าโค้ดที่คุณเขียนนั้นทำงานได้ตามที่คุณคาดหวัง และช่วยลดความกังวลเมื่อคุณทำการปรับปรุงหรือเพิ่มฟีเจอร์ใหม่ลงในโค้ด.
โดยเบื้องต้นเดียวผมจะแนะนำ วิธีการติดตั้งกับวิธีการ run PHPUnit tests ให้เบื้องต้นแลัวจะแปะ github ที่เป็น case stady ไว้ให้โดยตัวนี้จะเป็นคอร์สที่ผมไปเรียนในเว็บ laracasts ครับ
1. Setup PHPUnit tests
composer require phpunit/phpunit
2. ทำการเข้าไป update file composer.json
{
"require": {
"phpunit/phpunit": "^9.6" // อาจจะไม่ใช้ version ตามนี้นะไม่ต้องตกใจ
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}
3. ทำการสร้างโครงสร้างโปรเจคสำหรับทดสอบ
-| src
---| Abc.php
-| tests
---| AbcTest.php
-| vendor // -> ตัวนี้จะเป็น folder ไว้เก็บ package ที่เราสามารถยิบนำไปใช้
-| composer.json
-| composer-lock.json
4. อัพเดต code file Abc.php
<?php
namespace App;
class Abc
{
public static function generate($number)
{
return $number;
}
}
5. อัพเดต code file AbcTest.php
<?php
use App\Abc;
use PHPUnit\Framework\TestCase;
class AbcTest extends TestCase
{
/**
* @test
* */
function it_generates_check_number_test_1()
{
$this->assertEquals('1', Abc::generate('1'));
}
}
6. จากนั้นลอง Run test
วิธี run test ก็มีหลากหลายวิธีแต่ผมจะยกตัวอย่าง 2 วิธีนะครับ
1.วิธีที่ใช้ command
./vendor/bin/phpunit --verbose tests/AbcTest.php
2.วิธีโดยใช้ extensions vscode
ติดตั้งจากตัวนี้ได้เลย วิธีใช้ก็ง่ายแสนง่ายเพียงเอาเมาส์ไปกดที่ function แล้วกด Cmd+Shift+P on OSX or Ctrl+Shift+P on Windows and Linux เลือก PHPUnit Test
เพียงเท่านี้ระบบก็จำทำการ run test PHPUnit ให้แล้ว
ลองไปเล่น case ตาม github นี้ได้เลย ผมทำเป็น commit ให้นะ