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)