March 16, 2015

Unit test multi modules in Phalex project

Sau khi mình release project Phalex của mình thì tới nay đã khá lâu (cũng gần 4 tháng rồi) và mình cũng bắt đầu code vài dự án với Phalex. Một trong những dự án dựa trên Phalex 5SOnline - đây là một dự án mình làm cho công ty HDViet. Tuy nhiên, bên cạnh đó mình vẫn âm thâm code một dự án riêng của cá nhân, hy vọng sẽ trình làng mọi người vào giữa năm nay.

Dự án của HDViet thì phải chạy cho nhanh nên không có test (TDD) cho dự án, còn dự án cá nhân thì chắc chắn là có. Phalex ra đời nhằm mục đích là multi modules, nên khi làm việc với nó, mình cũng mất khá nhiều thời gian khi chạy test cho từng module. May mắn thay, vô tình hôm nay đọc cách test của Zend Framework 2, nên mình đã thử áp dụng vào project và đã thành công, nay mình chia sẽ lại với các bạn nếu ai đó có dùng Phalex để code

Cấu hình file phpunit.xml


Đầu tiên hết chính là cần file cấu hình PHPUnit test, cái này thì ai từng làm với PHPUnit thì đều không thấy gì là lạ cả. Trong cấu hình này, mình muốn test cho 2 modules là ApplicationCore.

Cài đặt Bootstrap

Tiếp theo đó, chúng ta cần cấu hình một file Bootstrap.php và đặt tại folder module/Application/tests (xem trong phần cấu hình phpunit.xml). File bootstrap này nhằm mục đích autoload các module cần test, các test case namespace. Mình embed file Bootstrap.php tại đây, mọi người có thể tham khảo

Hưởng thụ kết quả

Sau khi cài đặt xong, chúng ta chỉ cần đứng ngay thư mục gốc của project, chạy lệnh phpunit là xong. Theo cấu hình trong file phpunit.xml của mình bên trên, thì nó sẽ có phần code coverage. Và kết qủa như sau
PHPUnit code coverage


Phalex - Library build on top PhalconPHP Framwork.

3 comments:

  1. Cũng đang tính viết PHPUnit cho prọject Phalcon mà có cái setup này khỏe quá, thanks. Bạn có thể dích sang tiếng anh rồi share nó trên http://phalcontip.com, được không ?

    Thanks

    ReplyDelete
    Replies
    1. Cảm ơn bạn ghé qua tệ xá.
      Cái này nó không thuộc Phalcon thuần, mà nó là Phalex - một project của mình dựa trên Phalcon. Nên cũng không biết có áp dụng cho Phalcon thuần được không :)
      Bạn có thể tham khảo chi tiết Phalex tại đây:
      https://github.com/tmquang6805/phalex

      Delete
    2. OK, mình sẽ check nó

      Delete