2014-04-29 11 views
15

Tôi đã vật lộn với câu hỏi này quá lâu rồi. Tôi biết tôi cần phải nhảy vào cái này hay cái kia vì chúng đều là những công cụ hữu hiệu/hữu ích, nhưng đã bị mắc kẹt trên hàng rào, nghiên cứu cả hai, trong nhiều tuần.Shot đầu tiên khi thử nghiệm các ứng dụng Laravel 4 (PHPSpec/BDD so với PHPUnit/TDD)

PHPUnit so với PHPSpec - cái nào có thể dẫn đến khả năng duy trì và lập trình lâu dài tốt hơn?

Tôi đã nói chuyện với một số PHPUnit dày dạn -> PHPspec chuyển đổi/người dùng hiện đang thề bởi PHPspec, tuyên bố rằng nó thúc đẩy thiết kế tốt hơn nhờ cách tiếp cận BDD của nó. Tuy nhiên, vì nó là một công cụ mới hơn nhiều nên thiếu cộng đồng/hướng dẫn so với PHPUnit.

Hiện tại, phát triển PHP của tôi tập trung vào phát triển Laravel 4.

Khi PHPUnit về cơ bản được đưa vào khung làm việc của Laravel, có vẻ như đó là lựa chọn dễ dàng hơn ở phía trước, nhưng tôi thực sự thích khía cạnh BDD của PHPSpec. Tuy nhiên, có vẻ như PHPSpec không muốn chơi độc đáo với thiết lập mặt tiền của Laravel (mà tôi cũng tìm thấy có thể là một thực hành tốt để tránh xa khi có thể).

Câu hỏi hóc búa thực sự của tôi là cái nào trong số này sẽ có nhiều khả năng được tích hợp thành công vào dự án Laravel 4 hiện có với không có vùng phủ sóng thử nghiệm hiện tại.

Tôi đã có một lỗi ngắn/ngắn khi tích hợp cả PHPUnit và PHPSpec vào một dự án hiện có, nhưng thực sự không chắc bắt đầu bằng cách viết các bài kiểm tra ban đầu và kết thúc việc loại bỏ chúng trong thời gian này.

Tôi thực sự đang cố gắng phân loại xem một trong những giá trị nào có thể đáng để đầu tư một thời gian dài trong thời gian dài.

Bất kỳ tài nguyên/thông tin chi tiết nào từ bất kỳ ai đã trải nghiệm cả hai đều sẽ được đánh giá cao.

+0

Tôi đã vật lộn với cùng một điều, Bạn có phải là thành viên của Laracasts không? Jeffrey Way có một vài video trên cả PHPUnit và PHPSpec. Vì tôi là người mới thử nghiệm, tôi đã quyết định bắt đầu với PHPUnit vì có nhiều tài liệu hơn và có vẻ như dễ dàng hơn để bắt đầu. –

+0

Hah @MitchGlenn đó là tình hình chính xác của tôi. Tôi đã ở bên Laracasts từ tháng 12 năm ngoái và đã học được rất nhiều từ Jeffrey Way (dường như anh ấy đã thích PHPSpec gần đây). Sự tò mò của nhà phát triển khiến tôi muốn đi sâu vào PHPSpec, nhưng dường như sự lựa chọn hiệu quả hơn về thời gian/chi phí sẽ là PHPUnit vì lý do chính xác đó. Cảm ơn các đầu vào. – ErikTheDeveloper

+0

Tôi đã tham gia cách đây 6 ngày và có 65 video, tôi cảm thấy bộ não của mình sắp phát nổ từ rất nhiều nội dung tuyệt vời. Tôi muốn đi với PHPSpec từ Jeffrey tuyệt vời làm cho nó âm thanh, nhưng như bạn nói, để có thêm thời gian hiệu quả, tôi bắt đầu với các tuyến đường dễ dàng hơn để có được công việc làm. –

Trả lời

33

PhpSpec

PhpSpec là một thiết kế công cụ. Nó sẽ làm cho cuộc sống của bạn khó khăn ngay từ đầu nếu bạn không quen với TDD (phương pháp thử nghiệm đầu tiên).

Bạn sẽ học được rất nhiều trong quá trình. Bạn cũng sẽ thề rất nhiều. Nhiều điều, được coi là một thực tế xấu, không thể với PhpSpec (ví dụ như một phần mocks). Bạn sẽ phải hiểu nó và nắm lấy nó. Kiểm tra mặt tiền của Laravel rất khó, vì đó không phải là OOP.

Khó kiểm tra mã hiện có hơn với PhpSpec, vì bạn phải làm cho nó có thể thử nghiệm trước được (dễ dàng hơn với phương pháp thử nghiệm đầu tiên).

PHPUnit

Mặt khác, PHPUnit là một thử nghiệm công cụ. Bạn có thể sử dụng nó với TDD, BDD hoặc bất cứ điều gì bạn gọi nó. Nhưng bạn không phải làm vậy.

Choice

Nếu mục tiêu của bạn là để tìm hiểu làm thế nào để thiết kế tốt hơn và bạn đang cam kết tiếp cận thử nghiệm đầu tiên, PhpSpec sẽ giúp bạn. Nếu mục tiêu của bạn là kiểm tra hoặc xác minh, PhpUnit là bạn của bạn.

TDD vs BDD

Đó không phải là một trong hai TDD hoặc BDD. Ít nhất là từ góc độ cấp mã, chúng giống nhau. BDD bắt đầu như một TDD-redefined, cung cấp một thuật ngữ tốt hơn. Bây giờ nó vượt quá mức mã và nó còn hơn thế nữa. Những ngày này tôi thích sử dụng thuật ngữ được đề xuất bởi Gojko Adzic - Đặc điểm kỹ thuật theo Ví dụ.

+0

Hoàn hảo. Đó là khá nhiều ý chính tôi nhận được từ đọc và thử nghiệm với hai ... Trong trường hợp của tôi, tôi có thể cần phải bắt đầu với PHPUnit, vì tôi thực sự cần phải thực hiện một số thử nghiệm được thực hiện trong một số dự án hiện có. Và rồi! ... nhảy vào đấu trường PHPSpec. Tôi đã sử dụng đường ray/rspec (* thở hổn hển!) Trong vài tuần qua và đã tận hưởng điều đó. Loại phân chia giữa hai thế giới tại thời điểm này .... Cảm ơn sự thấu hiểu. – ErikTheDeveloper

+0

Tôi có hiểu được điều này một cách chính xác không: Bất kỳ khi nào một trong các chức năng của bạn sử dụng mặt tiền laravel, nó có thể kiểm tra được bằng phpspec không? Tôi nghĩ rằng điều này có thể liên quan đến một vấn đề khác mà tôi đang gặp phải (http://stackoverflow.com/questions/27973926/how-do-i-call-validator-from-a-namespace-with-an-already-existing-validator -clas) –

Các vấn đề liên quan