2010-02-10 25 views
8

Tôi thấy Jetty đã có và lớp ServletTest mà bạn có thể sử dụng để kiểm tra Servlets.Tôi có thể kiểm tra Servlets bằng JUnit bằng cách nào?

tester = new ServletTester(); 
tester.setContextPath("/"); 
tester.addServlet(TestServlet.class, "/servlet/*"); 
... 
tester.start(); 

Bạn có biết liệu có gì tương tự trong Tomcat không? Làm thế nào tôi có thể thử nghiệm một servlet?

+0

Để kiểm tra đơn vị, bạn không nên sử dụng thùng chứa servlet nào. Điều này tương tự như việc sử dụng HSQL thay vì Oracle để kiểm thử đơn vị mã truy cập cơ sở dữ liệu. Vì vậy, ngay cả khi bạn viết cho một triển khai Tomcat, nếu Jetty là phù hợp hơn cho thử nghiệm đơn vị (nhanh hơn để bắt đầu, dễ dàng hơn để cấu hình vv), bạn có thể đi với Jetty. – Thilo

Trả lời

6

Hãy xem Jakarta Cactus

Cactus là một khuôn khổ kiểm tra đơn giản cho mã kiểm tra đơn vị server-side java (Servlets, EJB, Tag Libs, Bộ lọc, ...).

Here's a servlet test how-to

+3

FYI Jakarta Cactus đã không được chấp nhận kể từ 2011/08/05. :( – Piko

2

Tôi chưa bao giờ tìm thấy lợi ích nào để kiểm tra servlet một cách trực tiếp (cũng như các hành động của Struts), đặc biệt là cho công việc cần thiết để thực hiện nó.

Hầu hết các servlet/hành động của tôi/bất cứ điều gì sử dụng POJO cho phần lớn công việc của họ và POJO được kiểm tra rất nhiều. Bản thân webapps có các bộ kiểm thử HtmlUnit. Tất cả mọi thứ ở giữa tôi giả định là hệ thống ống nước.

Tôi không tin rằng tôi thậm chí đã từng gặp phải bất kỳ loại lỗi nào có thể bị bắt gặp bằng cách kiểm tra trực tiếp các lớp servlet và sẽ không bị bắt gặp bởi các bài kiểm tra POJO hoặc webapp.

+2

Điểm được chụp.Tuy nhiên trong trường hợp của tôi, tôi đã thừa hưởng một servlet rác phức tạp và khủng khiếp. Có thể gọi nó từ một bài kiểm tra đơn vị cho kịch bản cụ thể không thành công sẽ rút ngắn quá trình gỡ lỗi của tôi. :) – Piko

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