2014-09-25 18 views
199

vài câu hỏi:Karma vs testing framework Jasmine, Mocha, QUnit

  • Làm thế nào Karma và khuôn khổ kiểm tra X (Jasmine, Mocha, QUnit) liên quan đến nhau?
  • Khung tương đương ở thế giới Java là gì? Tôi giả sử Jasmine, Mocha, QUnit bằng jUnit/TestNG. Làm thế nào về Karma?
  • Tôi có thể chạy thử nghiệm khuôn khổ X (ví dụ: Jasmine) mà không có Karma?
  • Có phải Karma cho thử nghiệm đơn vị hoặc thử nghiệm tích hợp/e2e không? Chương trình reference này dành cho thử nghiệm đơn vị, tuy nhiên this cho biết là dành cho thử nghiệm e2e.
+0

Chúng tôi chạy mocha không có Karma, nhưng [rất nhiều nhà phát triển sử dụng khuôn khổ thử nghiệm] (http://stackshare.io/stackups/karma-runner-vs-mocha-vs-jasmine) –

Trả lời

333

Karma là trình duyệt thử nghiệm trình duyệt.

Ý tưởng là các trình duyệt không có khái niệm tải tệp thử nghiệm, chạy chúng và báo cáo kết quả. gì nghiệp thực hiện là (xấp xỉ):

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

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

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

(2) Những thử nghiệm này có thể được viết bằng nhiều khuôn khổ 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 đôi chút đối với mỗi khung kiểm tra  ; đây là lý do tại sao nghiệp có bổ sung cho các khuôn khổ khác nhau.

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

(5) Báo cáo với nghiệp chướng là, một lần nữa, khung phụ thuộc, và xử lý với các plugin nghiệp .

Vì vậy, để giải đáp thắc mắc của bạn:

  • trong Java, hầu hết mọi người sử dụng JUnit đó là cả một khuôn khổ để viết 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 mà kiểm tra được chạy và báo cáo thử nghiệm được tổng hợp; nghiệp sẽ là phần còn thiếu giữa một JUnit Suite và một JUnit TestRunner
  • Vâng, bạn có thể làm mọi thứ mà nghiệp tạo "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 out-of-the-box, 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ả đơn vị kiểm tra (với hoa nhài/QUnit/bất cứ điều gì) và kiểm tra tích hợp (mà sẽ sử dụng API khác, như webdriver, để lái xe trình duyệt)
+38

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

+0

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

+1

@ Wang'lPakhrin 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 lực có thể khởi động (m) bất kỳ trình duyệt nào mà bạn muốn thử nghiệm. Vào thời điểm viết bài, hoa nhài không chịu trách nhiệm cho việc khởi động trình duyệt (tôi vẫn không nghĩ rằng nó có.) Hy vọng nó làm rõ mọi thứ! – phtrivier

21

Luận án của anh chàng người thiết kế Karma là 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ả bản thân Karma

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

Tóm tắt: Karma là một Á hậu kiểm tra. 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ó "đồng hồ" các tập tin, vì vậy khi bạn tiết kiệm một sự thay đổi, Karma chạy thử nghiệm và báo cáo lại ngay lập tức, không có bối cảnh chuyển đổi để trình duyệt Web để chạy thử nghiệm.

Trong ngắn hạn, có lẽ câu hỏi phải là Karma và Jasmine hoặc Mocha hoặc QUnit?

+2

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

+0

Nghiệp có thể chạy thử nghiệm Jest không? – SuperUberDuper

+0

bạn có thể xem trong Jasmine quá? tôi nghĩ vậy nhưng tôi không nhớ. –

51

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

dân thử nghiệm với đồng bằng Jasmine/Mocha rất có thể đang chạy tất cả các mã với máy ảo Node.

Thêm Karma vào danh sách kết hợp (trên đầu khung 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ẽ nhận được các tính năng bổ sung nhỏ mà bạn nhận được với môi trường trình duyệt. Nó sẽ dễ dàng hơn để kiểm tra mã liên quan đến DOM, nhưng bạn cũng sẽ từ bỏ các tài nguyên bổ sung được cung cấp bởi công cụ Node (như truy cập hệ thống tập tin/vỏ)

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