การทำ Unit Testing ด้วย PHPUnit กับ Netbeans 8.0

Software testing ความรู้ สำหรับ Tester ผู้ทดสอบ เป็นส่วนสำคัญในการ test โปรแกรม การ ทดสอบโปรแกรมมีความรู้แนะนำไว้ในหมวดนี้

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
tsukasaz
PHP VIP Members
PHP VIP Members
โพสต์: 21991
ลงทะเบียนเมื่อ: 18/04/2012 9:39 am

การทำ Unit Testing ด้วย PHPUnit กับ Netbeans 8.0

โพสต์ที่ยังไม่ได้อ่าน โดย tsukasaz »

ทำความรู้จัก Unit Testing

PHPUnit สามารถดาวน์โหลดได้ที่ https://phpunit.de/
Netbeans สามารถดาวน์โหลดเวอร์ชั่นล่าสุดได้ที่ https://netbeans.org/

PHPUnit ถ้าใครใช้ตัวจำลองเซิฟเวอร์ด้วย XAMPP จะมีตัว phpunit กับ phpunit.bat มาให้อยู่แล้วในโฟลเดอร์ php แต่ถ้าใครยังไม่มีก็ดาวน์โหลดเลยครับ

ส่วน Netbeans ทำความรู้จักได้ที่ Netbeans คืออะไร การติดตั้ง Netbeans

มาเข้าเรื่องกันดีกว่า การทำ Unit Testing ด้วย PHPUnit กับ Netbeans 8.0

เริ่มต้นเปิด Netbeans ขึ้นมาแล้วคลิกที่ Tools --> Options
phpunit-netbeans01.png
phpunit-netbeans01.png (41.93 KiB) Viewed 1455 times
ต่อมาคลิก PHP เลือกแท็บ Frameworks & Tools แล้วคลิกเลือก PHPUnit ตามภาพ
phpunit-netbeans02.png
phpunit-netbeans02.png (159.65 KiB) Viewed 1455 times
คลิก Browse เพื่อเลือกไฟล์ phpunit กับ phpunit-skelgen สามารถเลือกไฟล์ .bat ได้
phpunit สำหรับทดสอบ
phpunit-skelgen สำหรับ generate โค้ดทดสอบ
phpunit-netbeans03.png
phpunit-netbeans03.png (160.78 KiB) Viewed 1455 times
ตัวอย่างการใช้งาน สร้าง Class และ Function มาตามภาพ
phpunit-netbeans04.png
phpunit-netbeans04.png (62.47 KiB) Viewed 1455 times
ตามภาพจะสังเกตเห็น Comment และ คำว่า @assert ขออธิบายว่า ส่วนนี้จะใช้กับ phpunit-skelgen เพื่อ generate โค้ดทดสอบ ตามเงื่อนไขที่เรากำหนด ข้อมูลเพิ่มเติมของ Skeleton Generator

โค้ด: เลือกทั้งหมด

class Calculator
{
        /**
        * @assert (0, 0) == 0
        * @assert (0, 1) == 1
        * @assert (1, 0) == 1
        * @assert (1, 1) == 2
        * @assert (1, 2) == 4
        */
        public function add($a, $b)
        {
                return $a + $b;
        }
}
ขั้นตอนต่อมาเราจะกำหนดให้โปรเจคนี้ใช้ PHPUnit โดยคลิกขวาที่ชื่อโปรเจค เลือก Properties
phpunit-netbeans05.png
phpunit-netbeans05.png (76.18 KiB) Viewed 1455 times
เลือก Testing แล้วทำเครื่องหมายถูกที่หน้า PHPUnit เสร็จแล้ว คลิก Add Folder เพื่อสร้างโฟลเดอร์สำหรับเก็บไฟล์ทดสอบ เสร็จแล้วคลิก OK
phpunit-netbeans06.png
phpunit-netbeans06.png (83.11 KiB) Viewed 1455 times
phpunit-netbeans07.png
phpunit-netbeans07.png (58.66 KiB) Viewed 1455 times
เปิด cmd ขึ้นมาเพื่อ generate โค้ดทดสอบ

โค้ด: เลือกทั้งหมด

D:\xampp\php\phpunit-skelgen.bat generate-test "Calculator" "D:\xampp\htdocs\phpunit\calculator.php" "CalculatorTest" "D:\xampp\htdocs\phpunit\tests\calculatorTest.php"
phpunit-netbeans08.png
phpunit-netbeans08.png (173.21 KiB) Viewed 1455 times
โค้ดที่ได้ ( ปรับเพิ่มให้มันเรียก Class เข้ามาด้วย ที่ function setUp() )

โค้ด: เลือกทั้งหมด

<?php
/**
 * Generated by PHPUnit_SkeletonGenerator on 2014-11-28 at 09:42:54.
 */
class CalculatorTest extends PHPUnit_Framework_TestCase
{
    /**
     * @var Calculator
     */
    protected $object;

    /**
     * Sets up the fixture, for example, opens a network connection.
     * This method is called before a test is executed.
     */
    protected function setUp()
    {
        require_once '../calculator.php';   
        $this->object = new Calculator;
    }

    /**
     * Tears down the fixture, for example, closes a network connection.
     * This method is called after a test is executed.
     */
    protected function tearDown()
    {
    }

    /**
     * Generated from @assert (0, 0) == 0.
     *
     * @covers Calculator::add
     */
    public function testAdd()
    {
        $this->assertEquals(
            0
,
            $this->object->add(0, 0)
        );
    }

    /**
     * Generated from @assert (0, 1) == 1.
     *
     * @covers Calculator::add
     */
    public function testAdd2()
    {
        $this->assertEquals(
            1
,
            $this->object->add(0, 1)
        );
    }

    /**
     * Generated from @assert (1, 0) == 1.
     *
     * @covers Calculator::add
     */
    public function testAdd3()
    {
        $this->assertEquals(
            1
,
            $this->object->add(1, 0)
        );
    }

    /**
     * Generated from @assert (1, 1) == 2.
     *
     * @covers Calculator::add
     */
    public function testAdd4()
    {
        $this->assertEquals(
            2
,
            $this->object->add(1, 1)
        );
    }

    /**
     * Generated from @assert (1, 2) == 4.
     *
     * @covers Calculator::add
     */
    public function testAdd5()
    {
        $this->assertEquals(
            4
,
            $this->object->add(1, 2)
        );
    }
}
 
เสร็จแล้วก็ทดสอบได้เลยครับ คลิกขวาไฟล์ที่ต้องการแล้วเลือก Test ตามภาพ
phpunit-netbeans09.png
phpunit-netbeans09.png (69.53 KiB) Viewed 1455 times
ผลลัพท์ที่ได้
phpunit-netbeans10.png
phpunit-netbeans10.png (182 KiB) Viewed 1455 times
The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995)
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 66