เขียน Unit Test อย่างง่ายด้วย SimpleTest PHP unit tester

หลังจากที่ผมได้เรียนรู้การนำ Unit Test มาใช้งานเขียนโปรแกรม ก็เห็นประโยชน์ต่างๆ ที่ได้จากการเขียน Unit Test จนทำให้ผมติดการเขียนโปรแกรมที่มีการเขียน Unit Test ไปด้วยระหว่างการพัฒนา เดิมทีผมเริ่มเขียน Unit Test ด้วย NUnit เป็น Unit Test ของฝั่ง .NET เป็นตัวที่ ported มาจาก JUnit ซึ่งเป็น Unit Test Framework ของ Java แต่วันนี้ผมจะขอพูดถึงการใช้งาน SimpleTest เป็น Unit Test Framework ของฝั่ง PHP

เนื่องด้วยผมมีความจำเป็นที่ต้องพัฒนาเว็บด้วย PHP จึงเริ่มมองหา Unit Test ของ PHP ตัวแรกที่ผมเลือกมาใช้คือ PHPUnit เพราะคิดว่ามีความคล้ายคลึงกับ NUnit มากที่สุด และต่างก็ได้รับรูปแบบคำสั่งและการใช้งานแบบเดียวกับ JUnit แต่ผมก็พบว่า PHPUnit ค่อนข้างมีความยุ่งยากในการติดตั้ง จึงมองหา Framework ตัวอื่นแทน จนพบกับ SimpleTest ซึ่งใช้ได้ง่ายสมกับชื่อของเขาจริง เรามาดูกันเลยดีกว่าครับว่าจะใช้ได้ง่ายแค่ไหน

เริ่มจากสิ่งที่ต้องมีในการเขียน Unit ด้วย SimpleTest

เมื่อทุกอย่างพร้อมแล้วก็เริ่มกันเลย

สร้าง folder ใหม่ใน folder www ให้ชื่อว่า LearnSimpleTest เราจะใช้ folder นี้เก็บ PHP files

copy SimpleTest source ที่ download มาไปวางใน folder LearnSimpleTest

สร้าง function เพื่อทำการแปลงอุณหภูมิ Celsius และ Fahrenheit

<?php

//TemperatureConverter.php
function celsiusToFahrenheit ($celsius)
{
    return $celsius * 9/5 + 32;
}

function fahrenheitToCelsius($fahrenheit)
{
    return ($fahrenheit - 32)*5/9;
    
}

?>

สร้าง PHP file โดยตั้งชื่อว่า TemperatureConverterTest.php เปิด file นี้ขึ้นมา และเขียนคำสั่งต่อไปนี้ลงไป

<?php
//TemperatureConverterTest.php

//เพิ่มเข้าเพื่อใช้งาน SimpleTest
require_once('simpletest/autorun.php');

//file ที่เก็บ function ที่จะ test
require_once('TemperatureConverter.php');

//class ที่สร้างขึ้นมาเพื่อเขียน Unit Test ต้องสืบทอดจาก UniTestCase
class TemperatureConverterTest extends UnitTestCase {

    //test function ต้องมีชื่อข้นต้นด้วยคำว่า test
    function testCelsiusToFahrenheit() {
        
        //arrange
        $celsius = 20;

        //act
        $fahrenheit = celsiusToFahrenheit($celsius);

        //assert
        $expected = 68;
        $this->assertEqual($expected, $fahrenheit);
    }

    function testFahrenheitToCelsius() {

        //arrange
        $fahrenheit = 68;
        //act
        $celsius = fahrenheitToCelsius($fahrenheit);

        //assert
        $expected = 20;
        $this->assertEqual($expected, $celsius);
    }

}

?>


run test ด้วยการเปิด file TemperatureConverterTest.php บน browser ด้วย url http://localhost/LearnSimpleTest/TemperatureConverterTest.php
 

ผลลัพธ์ที่ได้เมื่อ test ทั้งหมดที่เขียนขึ้นมาผ่าน หมายความว่า function ที่เขียนขึ้นมาทำงานและให้ผลลัพธ์เป็นค่าที่ถูกต้อง

 

TemperatureConverterTest.php

1/1 test cases complete: 2 passes, 0 fails and 0 exceptions.

 

มีหลายเรื่องที่ผมยังไม่ได้กล่าวถึงในเรื่องของ UnitTest อย่างเช่น

โดยผมจะขอกล่าวถึงเรื่องเหล่านี้ในโอกาสต่อไป พร้อมกันนี้ผมได้แนบ file ที่ใช้ในตัวอย่างนี้ download ได้ที่นี่

สุดท้ายหวังว่าบทความนี้จะเป็นประโยชน์สำหรับนักพัฒนาที่ต้องการเขียน Unit Test กับ PHP นะครับ
 

ความเห็น

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Friends
jirawat.in.th clipdonjai.com janawat.wordpress.com csharp89.blogspot.com 108blog.net

HTML5 Powered with Multimedia