Tôi có nên sử dụng Protractor hoặc Karma cho thử nghiệm đầu cuối của mình không? [đóng cửa]


124

Tôi có nên sử dụng Protractor hoặc Karma cho thử nghiệm đầu cuối của mình không?

Angular-seed đang sử dụng Protractor / Selenium WebDriver cho E2E nhưng hướng dẫn angular-phonecat sử dụng nghiệp.

Tôi đọc rằng tôi nên sử dụng Karma cho các bài kiểm tra đơn vị và Protractor cho E2E, điều này có vẻ ổn nhưng tôi nghĩ tôi sẽ hỏi ở đây để có ý kiến ​​của các nhà phát triển khác.


1
Phù hợp hơn cho các khuyến nghị phần mềm . Mặc dù nếu bạn đăng câu hỏi này, bạn sẽ phải giải thích những yêu cầu của bạn. Meta liên quan
Giáo sư Allman

5
Karma và Protractor đều được nhóm Angular sử dụng và khuyên dùng, nhưng được đưa ra trạng thái của tài liệu (nghĩa là: có rất nhiều thứ và rất khó để biết những gì được cập nhật) thật khó để biết nên sử dụng và cho mục đích gì. Đây là một câu hỏi hay và câu trả lời của glpretre cũng chính xác là những gì tôi đang tìm kiếm.
Matt

5
Tôi không nghĩ câu hỏi quá rộng (Protractor vs Karma). Đó là các khuôn khổ mà chúng ta đang nói đến ở đây, không chỉ là một số phần mềm, vì vậy câu hỏi đặt ra là đúng chỗ.
CCC

Xem câu trả lời của tôi ở đây để thảo luận chi tiết hơn về các trường hợp sử dụng, ưu điểm và hạn chế của Karma và Protractor: stackoverflow.com/a/29619467/1614973
Dmitri Zaitsev

Tôi hiểu rằng Protractor không cho phép chỉ kiểm tra một phần ứng dụng của bạn mà không có sự hiện diện của phần còn lại (ví dụ: chế giễu): mã kiểm tra thậm chí không chạy trong cùng một trình thông dịch JS như ứng dụng. Không có giám sát hệ thống tập tin để sửa đổi mã nguồn và tự động kích hoạt lại các thử nghiệm bị ảnh hưởng. Karma cung cấp những thứ này. Nó gửi mã kiểm tra + mã ứng dụng trong <script> s tới trình duyệt để chúng chạy trong cùng một trình thông dịch, có thể chế giễu, nhưng không được thiết kế để kiểm tra từ đầu đến cuối với các sự kiện gốc như thể một người dùng thực sự đang hành động.
robert4

Câu trả lời:


179

Nhóm AngularJS khuyên bạn nên sử dụng Protractor vì nó sẽ thay thế người chạy kịch bản góc cạnh:

Người chạy kịch bản góc đang ở chế độ bảo trì - Nếu bạn đang bắt đầu một dự án Angular mới, hãy cân nhắc sử dụng Protractor .

trích dẫn từ tài liệu của AngularJs .

Hướng dẫn angular-phonecat đã được phát triển từ lâu (chủ yếu vào năm 2011) và chưa được cập nhật để sử dụng một số tính năng mới của Angular như Protractor.

BIÊN TẬP

Trong Tài liệu thước đo góc - Câu hỏi thường gặp :

Tại sao cả Karma và Protractor? Khi nào tôi sử dụng cái nào?

Karma là một công cụ tuyệt vời để thử nghiệm đơn vị, và Protractor dành cho thử nghiệm từ đầu đến cuối hoặc tích hợp. Điều này có nghĩa là các bài kiểm tra nhỏ về logic của các bộ điều khiển, chỉ thị và dịch vụ riêng lẻ của bạn nên được chạy bằng Karma. Các thử nghiệm lớn trong đó bạn có một phiên bản đang chạy của toàn bộ ứng dụng của mình sẽ được chạy bằng Protractor. Thước đo góc được dùng để chạy thử nghiệm theo quan điểm của người dùng - nếu thử nghiệm của bạn có thể được viết ra dưới dạng hướng dẫn cho con người tương tác với ứng dụng của bạn, thì đó phải là kết thúc thử nghiệm được viết bằng Protractor.

Đây là một bài viết blog tuyệt vời với nhiều thông tin hơn.


11
Từ Câu hỏi thường gặp về Karma - karma-runner.github.io/0.10/intro/faq.html - Tôi có thể sử dụng Karma để thực hiện kiểm tra từ đầu đến cuối không? Karma chủ yếu được thiết kế để thử nghiệm cấp độ thấp (đơn vị). Nếu đó là ứng dụng AngularJS, bạn có thể sử dụng Karma với plugin karma-ng-scripts, tuy nhiên chúng tôi khuyên dùng Protractor để thử nghiệm cấp cao.
mrwaim

Nếu tôi muốn thử nghiệm đơn vị cũng như thử nghiệm e2e thì tôi phải cấu hình môi trường karma để thử nghiệm đơn vị và thước đo góc để thử nghiệm ui hoặc thử nghiệm e2e?
Sunil Garg

2
@SunilGarg Có, bạn phải, có lẽ cấu trúc ứng dụng khởi động của chúng tôi có thể giúp bạn: github.com/glepretre/angular-requirejs- yet (bỏ qua yêu cầu cụ thể củaJS nếu bạn không sử dụng nó)
glepretre
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.