2009-07-10 61 views
8

Đối với Javascript, một số khung kiểm thử tồn tại, như JSUnit hoặc js-test-driver. Họ là tốt, nhưng họ chạy các bài kiểm tra trong một trình duyệt. Đó là tốt, đặc biệt là để xác minh webapp của bạn đang chạy trong các trình duyệt khác nhau. Nhưng trên máy chủ tích hợp liên tục không có hệ thống cửa sổ (và không có trình duyệt) nào được cài đặt. Vậy có cách nào để chạy thử nghiệm mà không cần sử dụng trình duyệt không? Tốt nhất là sử dụng một trong các khung công tác hiện có, để các nhà phát triển có thể chạy thử nghiệm cục bộ trong trình duyệt của họ và hệ thống tích hợp liên tục chạy chúng không có trình duyệt.Khung kiểm tra nào cho Javascript hỗ trợ Kiểm tra mà không cần trình duyệt?

+2

Đó không phải là câu trả lời cho câu hỏi của bạn, nhưng tôi khuyên bạn nên thử nghiệm điều đó trong trình duyệt thực. Đây là những gì người dùng cuối sẽ thấy, vì vậy điều này cần được kiểm tra. CI được cài đặt trên hệ điều hành nào? –

+1

CI được cài đặt trên linux, nhưng không có X. Vì vậy, thử nghiệm trong trình duyệt không thể thực hiện trên máy chủ CI. Trong các trình duyệt nó sẽ được kiểm tra bởi các nhà phát triển anyway, nhưng tôi muốn thêm các bài kiểm tra cũng để CI. – Mnementh

+0

Làm thế nào về phantomjs? – ShrekOverflow

Trả lời

1

Bạn có thể quan tâm đến HtmlUnit được sử dụng bởi nhiều khung UI thử nghiệm như WebDriver

1

jsTest có thể chạy dòng lệnh hoặc làm plugin eclipse.

Tuy nhiên, hãy cẩn thận, bạn sẽ không nhận được mức độ bao phủ 100% bằng cách sử dụng công cụ như thế này nếu bạn cần hỗ trợ nhiều trình duyệt. Mỗi trình duyệt thực hiện JavaScript khác nhau (tức là: IE). Do đó, cách duy nhất để kiểm tra đầy đủ JavaScript của bạn là chạy thử nghiệm trong tất cả các trình duyệt mà bạn hỗ trợ.

+0

Tôi không chắc chắn lý do tại sao bạn nói rằng bạn không thể nhận được mức độ phù hợp 100%. Bảo hiểm có nghĩa là mã được thực hiện. Vấn đề bạn chỉ đến (khả năng tương thích giữa các trình duyệt) là cùng một mã có thể có nghĩa là (và làm) những thứ khác nhau trong các môi trường thực thi khác nhau. Ý nghĩa của điều đó là nếu bạn có 100% phạm vi phủ sóng trong Firefox, nó có thể không cho bạn biết tất cả những gì bạn muốn biết về hành vi của mã trong IE. Bạn có thể nhận được bảo hiểm 100% mà không nhận được 100% kiến ​​thức.(Và thậm chí 100% mức độ phù hợp trong tất cả các trình duyệt không giống với 100% kiến ​​thức, nhưng đó là một vấn đề khác.) –

+0

Đây là 5 năm trước. Phát triển web trở lại sau đó là đầy đủ các phân nhánh phụ thuộc vào trình duyệt vì các API rất khác nhau. Nếu bạn chạy thử nghiệm của mình trong Firefox, một số dòng lệnh, v.v. bạn không thể thực hiện _any_ của mã trong nhánh khác xử lý một trình duyệt khác. Vì bạn để lại một nửa chi nhánh của bạn chưa được kiểm tra, bạn không thể yêu cầu bảo hiểm 100% mã. Ngày nay, cảnh quan rất khác nhau. Tôi thành thật không thể nhớ lần cuối tôi phải làm những việc khác nhau cho các trình duyệt khác nhau. – geowa4

0

Tôi tin rằng Canoo WebTest có thể chạy mà không cần trình duyệt. Đó là cơ bản một khuôn khổ frontend thử nghiệm nhưng có thể được sử dụng để kiểm tra hoạt Javascript cũng như:

http://webtest.canoo.com/

0

JSpec có thể chạy mà không cần trình duyệt (sử dụng Rhino). Nhưng cũng hỗ trợ được chạy trong trình duyệt là tốt.

http://visionmedia.github.com/jspec/

Nó cũng cung cấp một cú pháp đặc tả phong cách thoải mái:

describe 'ShoppingCart' 
    describe 'addProduct' 
    it 'should add a product' 
     cart.addProduct('cookie') 
     cart.addProduct('icecream') 
     cart.should.have 2, 'products' 
    end 
    end 
end 

Bằng cách chạy tất cả các bài kiểm tra đơn vị của bạn bên ngoài của một trình duyệt, bạn cũng nhận được những lợi ích của việc bảo đảm tách logic của bạn từ html/thuyết trình lớp (hữu ích cho các ứng dụng web, có thể overkill cho các kịch bản nhỏ).

+0

Dự án jspec đã chết và trước khi trang web của họ biến mất hoàn toàn, đề nghị Jasmine thay thế. http://stackoverflow.com/questions/3912312/jspec-no-longer-supported –

0

Jasmine sẽ chạy khá vui vẻ bên trong node.js.

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