ข้ามไปยังเนื้อหาหลัก
คู่มือระบบ เนื้อหาผ่านการตรวจสอบแล้ว

การรัน Test: รัน Test Case ด้วย PHPUnit

บทความนี้อธิบายวิธีการรัน Test Case ที่สร้างด้วย PHPUnit ผ่าน Command Line โดยใช้คำสั่ง `phpunit` ซึ่งสามารถรัน Test ทั้งหมด หรือระบุ Test Class หรือ Test Suite...

การรัน Test: รัน Test Case ด้วย PHPUnit

หลังจากที่เราได้เรียนรู้เกี่ยวกับ Assertions และวิธีการสร้าง Test Case ในบทก่อนหน้าแล้ว ในบทนี้เราจะมาเรียนรู้วิธีการรัน Test Case ที่เราสร้างขึ้นด้วย PHPUnit จาก Command Line ซึ่งเป็นขั้นตอนสำคัญในการตรวจสอบว่าโค้ดของเราทำงานได้อย่างถูกต้องตามที่เราคาดหวังไว้

คำสั่ง phpunit

คำสั่งหลักที่เราใช้ในการรัน Test ด้วย PHPUnit คือ phpunit นั่นเอง โดยเราจะเรียกใช้คำสั่งนี้จาก Command Line หรือ Terminal ของเรา

ข้อควรรู้: ก่อนที่จะรันคำสั่ง phpunit ได้ คุณจะต้องมั่นใจว่าได้ติดตั้ง PHPUnit เรียบร้อยแล้ว หากยังไม่ได้ติดตั้ง สามารถดูวิธีการติดตั้งได้ในบทแรก "เริ่มต้นกับ Unit Testing: ทำความรู้จัก PHPUnit"

รูปแบบการใช้งานคำสั่ง phpunit ที่ง่ายที่สุดคือ:

phpunit

เมื่อรันคำสั่งนี้ PHPUnit จะมองหาไฟล์ Test Case ใน directory ปัจจุบันและ directory ย่อยทั้งหมด โดยจะมองหาไฟล์ที่ลงท้ายด้วย Test.php หรือ Tests.php (ค่า default สามารถปรับแต่งได้ในไฟล์ phpunit.xml หรือ phpunit.xml.dist)

การระบุ Test Class หรือ Test Suite

ในบางครั้ง เราอาจต้องการรัน Test Case เพียงบางส่วนเท่านั้น PHPUnit ก็มี options ให้เราสามารถระบุ Test Class หรือ Test Suite ที่ต้องการรันได้

การระบุ Test Class

หากต้องการรัน Test Class เพียง class เดียว เราสามารถระบุ path ของไฟล์ Test Class ได้โดยตรง เช่น:

phpunit tests/MyClassTest.php

คำสั่งนี้จะรัน Test Case ที่อยู่ในไฟล์ MyClassTest.php เท่านั้น

การระบุ Test Suite

Test Suite คือกลุ่มของ Test Cases ที่ถูกจัดกลุ่มไว้ด้วยกัน เราสามารถสร้าง Test Suite ได้โดยการกำหนดในไฟล์ phpunit.xml หรือ phpunit.xml.dist (จะกล่าวถึงในบทต่อๆไป) หรือระบุ directory ที่มี Test Cases ที่ต้องการรันทั้งหมด:

phpunit tests/

คำสั่งนี้จะรัน Test Cases ทั้งหมดที่อยู่ใน directory tests/ และ directory ย่อยทั้งหมด

การดูผลลัพธ์การรัน Test

หลังจากที่เรารันคำสั่ง phpunit แล้ว PHPUnit จะแสดงผลลัพธ์ของการรัน Test ให้เราทราบ โดยผลลัพธ์จะประกอบไปด้วยข้อมูลต่างๆ ดังนี้:

  • จำนวน Test Cases ที่รัน: จำนวน Test Cases ทั้งหมดที่ถูกรัน
  • จำนวน Assertions: จำนวน Assertions ทั้งหมดที่ถูกตรวจสอบ
  • สถานะของ Test Cases: สถานะของ Test Cases แต่ละ case ว่าผ่าน (passed), ล้มเหลว (failed) หรือมีข้อผิดพลาด (error)
  • รายละเอียดของ Test Cases ที่ล้มเหลวหรือมีข้อผิดพลาด: ข้อความแสดงข้อผิดพลาด (error message) หรือรายละเอียดของการล้มเหลว (failure details)
  • เวลาที่ใช้ในการรัน Test: เวลาที่ใช้ในการรัน Test ทั้งหมด

ตัวอย่างผลลัพธ์การรัน Test:

PHPUnit 9.5.28 by Sebastian Bergmann and contributors.

.                                                                   1 / 1 (100%)

Time: 00:00.010, Memory: 6.00MB

OK (1 test, 1 assertion)

จากตัวอย่างผลลัพธ์ จะเห็นได้ว่ามี Test Case ทั้งหมด 1 test และมี assertion 1 assertion และ Test Case ทั้งหมดผ่าน (OK)

หากมี Test Case ที่ล้มเหลว (failed) หรือมีข้อผิดพลาด (error) PHPUnit จะแสดงรายละเอียดเพิ่มเติมเกี่ยวกับ Test Case เหล่านั้น เพื่อให้เราสามารถระบุสาเหตุของปัญหาและแก้ไขได้อย่างถูกต้อง

ตัวอย่างผลลัพธ์การรัน Test ที่มี Test Case ล้มเหลว:

PHPUnit 9.5.28 by Sebastian Bergmann and contributors.

F                                                                   1 / 1 (100%)

Time: 00:00.010, Memory: 6.00MB

There was 1 failure:
1) MyClassTest::testAddition
Failed asserting that 5 matches expected 6.

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

จากตัวอย่างผลลัพธ์ จะเห็นได้ว่ามี Test Case ที่ล้มเหลว 1 Test Case (F) โดยมีรายละเอียดว่า Test Case MyClassTest::testAddition ล้มเหลวเนื่องจาก assertion คาดหวังค่า 6 แต่ได้รับค่า 5

ตัวอย่างการใช้งานจริง

สมมติว่าเรามีไฟล์ Test Case ชื่อ CalculatorTest.php ที่อยู่ใน directory tests/ ดังนี้:

// tests/CalculatorTest.php

use PHPUnit\Framework\TestCase;

class CalculatorTest extends TestCase
{
    public function testAddition()
    {
        $calculator = new Calculator();
        $result = $calculator->add(2, 3);
        $this->assertEquals(5, $result);
    }
}

class Calculator {
    public function add(int $a, int $b): int {
        return $a + $b;
    }
}

เราสามารถรัน Test Case นี้ได้โดยใช้คำสั่ง:

phpunit tests/CalculatorTest.php

หรือหากเราต้องการรัน Test Cases ทั้งหมดที่อยู่ใน directory tests/ เราสามารถใช้คำสั่ง:

phpunit tests/

สรุป

ในบทนี้ เราได้เรียนรู้วิธีการรัน Test Case ด้วย PHPUnit จาก Command Line ซึ่งเป็นขั้นตอนสำคัญในการตรวจสอบว่าโค้ดของเราทำงานได้อย่างถูกต้องตามที่เราคาดหวังไว้ เราได้เรียนรู้เกี่ยวกับคำสั่ง phpunit, วิธีการระบุ Test Class หรือ Test Suite ที่ต้องการรัน และวิธีการดูผลลัพธ์การรัน Test

ในบทถัดไป เราจะมาเรียนรู้เกี่ยวกับ Test Driven Development (TDD) ซึ่งเป็นแนวทางการพัฒนาซอฟต์แวร์ที่เน้นการเขียน Test Case ก่อนที่จะเขียนโค้ดจริง

Office.in.th Custom Service

ต้องการพัฒนาระบบหรือปรับแต่งจากโครงสร้างนี้?

Office.in.th รับพัฒนาและออกแบบ Enterprise Web Application, API Integration และระบบบริหารงานภาครัฐ/เอกชน พร้อมการสนับสนุนระยะยาว

ดูบริการรับพัฒนาซอฟต์แวร์