Karma vs khung thử nghiệm Jasmine, Mocha, QUnit [đã đóng]


258

Một số câu hỏi:

  • Karma và khung thử nghiệm X (Jasmine, Mocha, QUnit) liên quan với nhau như thế nào?
  • Khung tương đương tại thế giới Java là gì? Tôi giả sử Jasmine, Mocha, QUnit bằng jUnit / TestNG. Thế còn Karma?
  • Tôi có thể chạy thử nghiệm khung X (ví dụ Jasmine) mà không cần Karma không?
  • Là Karma cho bài kiểm tra đơn vị hoặc kiểm tra tích hợp / e2e? Tài liệu tham khảo này cho thấy để thử nghiệm đơn vị, tuy nhiên điều này nói là dành cho thử nghiệm e2e.

Câu trả lời:


419

Karma là một người chạy thử trình duyệt.

Ý tưởng là các trình duyệt không có khái niệm về tải các tệp kiểm tra, chạy chúng và báo cáo kết quả. Những gì nghiệp làm là (đại khái):

  • bắt đầu một máy chủ web nhỏ để phục vụ các tệp javascript "phía máy khách" cần kiểm tra (1)
  • cũng phục vụ các tệp javascript "phía máy khách" bằng các bài kiểm tra (hoặc Thông số kỹ thuật, như chúng thường được gọi) (2)
  • phục vụ một trang web tùy chỉnh sẽ chạy mã javascript cho các bài kiểm tra (3)
  • bắt đầu một trình duyệt để tải trang này (4)
  • báo cáo kết quả kiểm tra đến máy chủ (5)
  • nghiệp sau đó có thể báo cáo lại kết quả cho các tệp văn bản, bảng điều khiển, bất cứ thứ gì máy chủ CI của bạn thích, v.v ...

Nhìn vào từng phần:

(1) Những tệp đó sẽ là tệp js thực tế của bạn; bạn sẽ nói nghiệp chướng làm thế nào để tải chúng. Nếu bạn sử dụng requestjs, có một plugin karma và một số cấu hình là cần thiết.

(2) Những bài kiểm tra đó có thể được viết trong nhiều khung kiểm tra Javascript (Jasmine, QUnit, Mocha); đây là mã JS được chạy trong trình duyệt.

(3) Trang web tùy chỉnh sẽ khác một chút cho mỗi khung kiểm tra; đây là lý do tại sao nghiệp chướng có bổ trợ cho các khung khác nhau.

(4) Karma có thể khởi chạy trang trong nhiều trình duyệt (FF, Chrome hoặc các trình duyệt không đầu như PhantomJs.)

(5) Báo cáo về nghiệp, một lần nữa, phụ thuộc vào khung và xử lý các bổ trợ nghiệp.

Vì vậy, để trả lời câu hỏi của bạn:

  • trong Java, hầu hết mọi người sử dụng JUnit, cả hai đều là một khung để viết các bài kiểm tra và chạy chúng, nhưng không có vấn đề phân biệt môi trường trong đó các bài kiểm tra được chạy và một trong đó các báo cáo kiểm tra được tổng hợp; nghiệp chướng sẽ là mảnh ghép còn thiếu giữa JUnit Suite và JUnit TestRunner
  • Vâng, bạn có thể làm mọi thứ mà nghiệp lực "làm bằng tay" - chọn một khung (hoa nhài, qunit, mocha) và làm theo hướng dẫn. Ưu điểm của nghiệp là nó cung cấp một giải pháp vượt trội, nếu bạn đang ở trong một thiết lập tiêu chuẩn.
  • Karma có thể được sử dụng cho cả bài kiểm tra đơn vị (với hoa nhài / qunit / bất cứ thứ gì) và kiểm tra tích hợp (sẽ sử dụng một API khác, như webdo, để lái trình duyệt)

59
Điều này xứng đáng một bài viết blog hoặc một cái gì đó.
Willa

Karma có thể khởi chạy trang trong nhiều trình duyệt (FF, Chrome hoặc các trình duyệt không đầu như PhantomJs.)? Jasmine có đúng không? chúng ta có thể kiểm tra nó trên nhiều khung công tác và chọn thiết lập đó trong conf js
Wang'l Pakhrin

1
@ Wang'lPakhrin Tất nhiên bạn có thể sử dụng hoa nhài với (m) bất kỳ trình duyệt nào. Ý tôi là, về mặt kỹ thuật, nghiệp có thể khởi chạy (m) bất kỳ trình duyệt nào bạn muốn kiểm tra. Tại thời điểm viết bài, hoa nhài không chịu trách nhiệm cho việc thực sự khởi động trình duyệt (tôi vẫn không nghĩ là có.) Hy vọng nó làm rõ mọi thứ!
phtrivier


1
@Willa Tôi đã tạo một vid youtube dựa trên câu trả lời này youtube.com/watch?v=bJc078szrZA :)
bersling

70

Một cách ngắn hơn để hiểu sự khác biệt:

Những người thử nghiệm với Jasmine / Mocha đơn giản rất có thể đang chạy tất cả mã với máy ảo Node.

Thêm Karma vào hỗn hợp (trên khung lựa chọn hiện tại của bạn) sẽ chạy bộ thử nghiệm của bạn với công cụ của các trình duyệt khác.

Bằng cách này, bạn sẽ có được các tính năng bổ sung nhỏ bạn có được với môi trường trình duyệt. Việc kiểm tra mã liên quan đến DOM sẽ dễ dàng hơn, nhưng bạn cũng sẽ từ bỏ các tài nguyên bổ sung do công cụ Node cung cấp (như truy cập hệ thống tập tin / hệ vỏ)


34

Luận án của người đã thiết kế Karma rất nhiều thông tin trong việc mô tả các giải pháp hiện có và so sánh chúng, và tất nhiên là mô tả chính Karma

https://github.com/karma-runner/karma/blob/master/thesis.pdf

Tóm tắt: Karma là một người chạy thử. Nó có thể được sử dụng bởi QUnit, Jasmine, Mocha, ... Karma có lợi thế cho những người chạy thử nghiệm khác để cải thiện chu kỳ phát triển TDD / BDD của bạn. Nó "xem" các tệp, vì vậy khi bạn lưu thay đổi, Karma sẽ chạy thử nghiệm và báo cáo lại ngay lập tức, không chuyển ngữ cảnh sang Trình duyệt web để chạy thử nghiệm.

Tóm lại, có lẽ câu hỏi nên là Karma VÀ Jasmine hay Mocha hay QUnit?


2
Bạn có thể tóm tắt nhỏ, từ liên kết. Điều đó cải thiện câu trả lời của bạn
won_joiner

1
Nghiệp chướng có thể chạy thử nghiệm Jest?
SuperUberDuper

bạn cũng có thể xem ở Jasmine chứ? Tôi nghĩ vậy nhưng tôi không nhớ thầm.
Wang'l Pakhrin

@ Wang'l Pakhrin Tôi không biết rằng Jasmine có chức năng đồng hồ, tôi chỉ sử dụng gật đầu. "gật gù - hoa nhài" và mỗi khi bạn lưu một tập tin, nó sẽ chạy các bài kiểm tra.
snowfrogdev

Luận án không đề cập đến Jasmine.
Carl G
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.