Tìm hiểu chung về Symfony Phpunit test

Thảo luận trong 'Symfony' bắt đầu bởi truong, 30/3/15.

  1. truong

    truong Moderator

    Tham gia:
    30/3/15
    Bài viết:
    7
    "Thích" đã nhận:
    0
    Điểm nhận Cup:
    1
    Giới tính:
    Nam
    1. Đặt vấn đề , tại sao ta phải test code ?

    • Khi phát triển 1 dự án nào đó thì việc phát sinh lỗi khi phát triển các module là điều không thế tránh khỏi . Việc phát sinh lỗi có thể gây ra tổn thất to lớn (Ví dụ như những module thanh toán tiền) .
    • Nếu không được phát hiện kịp thời có thể làm cho tiến độ dự án bị trậm trễ .
    • Ảnh hưởng đến chất lượng sản phẩm và cũng gây ảnh hưởng đến sự hài lòng của khách hàng .
    2. Mục tiêu khi test code là gì ?

    • Tìm ra các lỗi và các lỗi tiềm ẩn
    • Đảm bảo các thành phần làm việc ăn khớp với nhau và giống với tài liệu yêu cầu
    • Ngăn cản lỗi trước khi nó ảnh hưởng đến sản phẩm , sự trải nghiệm sản phẩm của khách hàng .
    3.Unit Test là gì ?

    • Unit Test có ý nghĩa là bạn kiểm tra một đơn vị code hoạt động có ổn như bạn mong muốn không chứ không phải kiểm tra một thành phần. Để cho rõ hơn ta sẽ lấy ví dụ về đơn vị và thành phần để bạn có thể hiểu được phạm vi của hai thuật ngữ này. Đơn vị bạn có thể hiểu là các class và thành phần bạn có thể hiểu là tập hợp các class để thực hiện một chức năng nào đó . Và do vậy, khi thực hiện Unit Test, tuyệt đối không được thực hiện test quá một đơn vị trong mỗi test, tất cả các thành phần sử dụng đơn vị đó lẫn các thành phần được đơn vị đó sử dụng đều phải được cô lập (làm thế nào để giả định các đơn vị khác đã hoạt động chính xác và sẽ không có chuyện đơn vị này lỗi do đơn vị phụ thuộc kia bị lỗi).
    4. Unit Test với project PHP ?

    • Có rất nhiều cách để thực hiện việc Unit Test , cũng có rất nhiều framework để thực hiện việc này trên php.
    • Theo recommend thì Symfony khuyến khích lập trình viên sử dụng Phpunit.
    • Bạn cũng có thể sử dụng plug in Phpunit của symfony . Đây là 1 plug in được phát triển nhằm cho việc sử dụng phpunit trên symfony được dễ dàng hơn .
    5. sfPhpunitPlugin

    • Ý tưởng chính của plugin là để tích hợp phpunit và symfony lại gần hơn. Làm cho quá trình kiểm code chuẩn hơn, linh hoạt và dễ dàng cho các nhà phát triển symfony. Một ý tưởng khác là để cho phép các nhà phát triển sử dụng các tính năng mà chỉ họ muốn và không gây bất kỳ yêu cầu thêm nào .
    Viêc cài đặt bạn có thể xem thêm ở https://github.com/makasim/sfPhpunitPlugin/wiki

    Trong bài nay ta sẽ tập trung vào việc viết test unit như thế nào .

    6. Tạo test đơn giản

    • Trên thực tế bạn có thể đặt file test ở bất kì thư mục nào . Nhưng để dễ quản lý bạn nên đặt các file test ở trên cùng 1 folder .
    Ví dụ :

    [​IMG]

    Như trên hình . Chúng ta đặt các file test vào trong thư mục phpunit .

    Bây giờ chúng ta tạo 1 file test . Class của file test phải được đc extends từ PHPUnit_Framework_TestCase của phpunit để có thể chạy được .

    Trong function test này ta sẽ extends từ class sfBasePhpunitTestCase của plugin Symfony . sfBasePhpunitTestCase cung cấp cho chúng ta 1 số tiện lợi hơn trong việc load dữ liệu giả(fixture) cho việc test (sẽ được đề cập sau) và tất nhiên để chạy được thì class này phải được extends từ PHPUnit_Framework_TestCase

    [​IMG]

    • Đối với việc dùng phpunit ngoài việc class test phải thừa kế PHPUnit_Framework_TestCase thì còn 1 điều phải chú ý nữa đó là các hàm test bắt buộc phải có chứ test khi bắt đầu tên hàm
    • Như bạn có thể thấy function này so sánh số lượng phần tử của $array với 1 số cho trước .
    • Function assertEquals trả về true nếu 2 giá trị nhập vào giống nhau và ngược lại . Bạn có thể tham khảo thêm tại :https://phpunit.de/manual/current/en/appendixes.assertions.html#appendixes.assertions.assertEquals
    • Nếu tất cả phù hợp thì hàm test sẽ không báo lỗi [​IMG]
    Ở đây chúng ta chỉ có 1 test và 1 hàm so sánh nên có thể thấy thông báo OK (1 test, 1 assertion)

    7. Test function class

    Giả sử đây là class ta muốn test

    [​IMG]

    Trong class StackTest ta thêm 1 function để test function của class ExampleFunction như hình dưới

    [​IMG]

    • Tương tự nếu muốn test function non static , Chúng ta cũng sẽ test tương tự : Thêm function add (non static)
    [​IMG]

    Rồi thêm hàm test cho hàm add

    [​IMG]

    Kết quả khi chạy

    [​IMG]


    8. Test với dữ liệu đầu vào cho trước

    • Trong 1 file test thì ngoài những function test ta còn có thể tạo nhiều function với các chức năng phụ trợ cho function test . Như function dùng để cung cấp dữ liệu cho function test .
    Ta gọi chúng là hàm dataProvider. Chúng giúp cho việc test trở nên dễ dàng hơn khi chúng ta muốn test 1 function nào đó với nhiều trường hợp input đầu vào .

    [​IMG]

    Như chúng ta thấy hàm testRegularModuloWithProvider có dataProvider là hàm dataRegularModulo . HàmdataRegularModulo sẽ trả về dữ liệu là kiểu mảng , mỗi phần tử trong mảng tương ứng sẽ là input data trong mỗi lần chạy của function test

    Kết quả ta thấy

    [​IMG]

    Hàm provider đã giúp chúng ta không phải viết đi viết lại hàm test nhiều lần .

    Tài liệu tham khảo

     

    Bình Luận Bằng Facebook

  2. truong

    truong Moderator

    Tham gia:
    30/3/15
    Bài viết:
    7
    "Thích" đã nhận:
    0
    Điểm nhận Cup:
    1
    Giới tính:
    Nam
    BÀI VIẾT HAY VĐ
     
  3. admin

    admin Administrator Staff Member

    Tham gia:
    27/3/15
    Bài viết:
    141
    "Thích" đã nhận:
    30
    Điểm nhận Cup:
    28
    Bài viết hay quá .. Cũng đang định tìm hiểu về symfony
     
  4. asvenus

    asvenus Moderator

    Tham gia:
    27/3/15
    Bài viết:
    5
    "Thích" đã nhận:
    0
    Điểm nhận Cup:
    1
    Giới tính:
    Nam
    hay cái nồi
     
  5. mucin413

    mucin413 Member

    Tham gia:
    13/10/17
    Bài viết:
    49
    "Thích" đã nhận:
    0
    Điểm nhận Cup:
    6
    Giới tính:
    Nam
    Cần bán hộp mực máy in cũ hp 90A tại Tỉnh Phú Thọ uy tín

    Bạn lần chần không biết nên mua mực máy in HP 90A ở đâu? vì giá mua của mỗi hộp mực khá cao? Thu mua hộp mực máy in cũ hp 90A tận nơi trên toàn quốc tại Xã Tiên Lương, Huyện Cẩm Khê, Tỉnh Phú Thọ

    Chỉ cần thao tác 4 bước đơn giản, bạn sẽ bán được mực máy in HP 90A với giá cao:

    Bước 1: Truy cập vào website Thanhlymucin.com

    Bước 2: soát hộp mực cũ của quý khách mã số bao lăm? (tỉ dụ: HP 90A).

    Bước 3: Vào website Thanhlymucin.com => sẩn phẩm => Tìm đúng mã hộp mực quý khách đang có, trên web có giá (tùy thời khắc ).

    Hoặc vào mục trên dưới trên website => gõ đúng mã số quý khách cần bán => Hiển thị ngay kết quả & giá cho quý khách.

    Bước 4: liên quan với chúng tôi qua số, Liên hệ : 0918.71.33.79 hoặc Email: mucin168@gmail.com

    Chỉ với 4 bước cơ bản trên, bạn sẽ tầng được thông tin, giá cả sản phẩm trên website và thông tin cho chúng tôi.

    Cụ thể là: Mực in HP 90A black laserjet toner cartridge (ce390a)
    • Có mã mực: Mực inHP 90A Black LaserJet Toner Cartridge (CE390A),
    • Loại mực: Laser trắng đen,
    • Dùng cho máy in HP M601n/M601dn/ M602dn/ M602x/ M603n/ M603dnLaser Jet Printer.
    • Giá mua là 100.000vnd/cái.
    Ngoài ra, bạn có thể cung cấp về số lần nạp mực và số lượng sản phẩm bạn cần bán để được báo giá chính xác nhất.

    Đặc biệt, Cửa Hàng Thu Mua Mực In sẽ để mức giá tốt nhất khi quý khách bán với số lượng nhiều và hệ trọng sớm. Công ty chúng tôi chuyên cung cấp dịch vụ thu mua mực máy in, máy tính trong tỉnh thành, ngoài thành phố và toàn quốc. Không giới hạn về số lượng sản phẩm bạn muốn bán.

    [​IMG]

    Cam kết chất lượng và giá cả thu mua tốt nhất

    Để máy in luôn hoạt động tốt như nhà sản xuất khuyến cáo, bạn không nên vậy tìm mua mực máy in ở đâu loại HP 90A, mà nên mua hộp mực mới chính hãng.

    Về phần hộp mực HP 90A cũ, chỉ cần liên can, viên chức tại Cửa Hàng Thu Mua Mực In sẽ đến thu mua ngay thức thì chỉ sau 2 giờ nhận được cuộc gọi của quý khách. Cam kết chất lượng hàng đầu, uy tín – mau chóng – thuận lợi. tất tật vì ích của quý khách, quý doanh nghiệp, trường học.

    Việc thay mực đòi hỏi kỹ thuật khéo, quy trình phức tạp và tốn công chùi rửa. thành ra, thay vì bạn muốn biết mua mực máy in ở đâuloại HP 90A, bạn có thể thay luôn hộp mực cũ. Để tiện tặn phí tổn thay hộp mực, bạn có thể can dự về Cửa Hàng Thu Mua Mực In. Chúng Tôi cam kết sẽ thu mua với giá ưu đãi nhất trên thị trường.

    [​IMG]

    Thay vì bạn muốn biết mua mực máy in ở đâu HP 90A, bạn có thể thay luôn hộp mực cũ

    Rất mong được cộng tác và nhận được cuộc gọi của bạn. Trân trọng cảm ơn!
     
  6. linhoen12

    linhoen12 Member

    Tham gia:
    9/1/18
    Bài viết:
    48
    "Thích" đã nhận:
    0
    Điểm nhận Cup:
    6
    Giới tính:
    Nữ
    Nến thơm Thần Tài - Phật Thủ - Hoa Sen
    Thắp Sáng Tài Vận - May Mắn Cả Năm
    Năm Mậu Tuất sắp đến, Ban thờ nên có một cặp Nến Phật Thủ phong thủy, một cặp nến Thần Tài Hoa Sen không chỉ hoàn thiện ngũ hành âm dương mà còn mang đến không khí Tết ấm cúng, cầu chúc một năm may mắn, phát tài.
    Sản Phẩm:
    Trọng lượng:
    Hoa Sen Thần Tài: 1kg/bộ (Giá 250k)
    Phật thủ: 1,4kg/cặp (Giá 230k)
    Hoa Sen: 1kg/cặp (Giá 160k)
    Nến có thời gian cháy khoảng 60-72h(tương đương khoảng 3 ngày)
    Khi thắp nến tỏa mùi thơm giống mùi hương Phật thủ
    Tim nến được làm từ sợi bông tự nhiên không có chì và không độc hại
    Có giá sĩ > 5 cặp
    Liên hệ: 0902.363.000
    Facebook: https://www.facebook.com/dochungtet/
    Shopee: https://shopee.vn/Nến-Thần-Tài-Hoa-Sen-Phật-Thủ-i.13352045.819526963
    Địa chỉ: 97/101 Trần Hưng Đạo P6 Q5 HCM

    [​IMG][​IMG][​IMG][​IMG][​IMG][​IMG][​IMG]
     

Share This Page