2010-01-25 45 views
5

Tôi có một công cụ web khi được truy vấn trả về các lớp Java được tạo dựa trên các đối số trong URL.Tạo các Bài kiểm tra Đơn vị Tự động

Các lớp chúng tôi truy xuất từ ​​máy chủ web thay đổi hàng ngày và chúng tôi cần đảm bảo rằng chúng vẫn có thể xử lý các yếu tố đầu vào đã biết.

Lưu ý các lớp này không kiểm tra máy chủ web, chúng chạy cục bộ và biến xml thành định dạng tùy chỉnh. Tôi không kiểm tra máy chủ web.

Các lớp này sau đó phải được đặt trong cấu trúc gói cụ thể được biên dịch và chạy với bộ dữ liệu đầu vào đã biết và so sánh với dữ liệu đầu ra đã biết.

Tôi muốn tự động thực hiện việc này mỗi đêm để đảm bảo rằng các lớp được tạo là chính xác.

Cách tốt nhất để đạt được điều này là gì?

Cụ whats cách tốt nhất để:

  1. lấy mã từ một máy chủ web và đặt nó trong một file
  2. biên dịch mã và sau đó gọi nó là

Tôi chắc chắn một kết hợp của junit và ant sẽ có thể đạt được điều này nhưng có và giải pháp/cách tiếp cận tiêu chuẩn cho điều này?

+1

Câu hỏi tương tự đã được hỏi 18 phút trước khi bạn: http://stackoverflow.com/questions/2131935/automatic-generation-of-unit-tests-for-java Bạn cũng có thể muốn theo dõi nó :) * Cập nhật * : cả hai đều đến từ London .. Đồng nghiệp? : o – BalusC

+0

Vì cái này cung cấp nhiều chi tiết hơn, làm thế nào để chúng ta bỏ phiếu để đóng một cái khác như một bản sao của cái này? –

+0

Hahaha không, chúng tôi không làm việc cùng nhau. London là một nơi khá lớn. Cảm ơn sự giúp đỡ của bạn –

Trả lời

2

Đầu tiên, để trả lời câu hỏi của bạn: Không, tôi không nghĩ rằng có cách tiếp cận tiêu chuẩn cho việc này. Điều này nghe giống như một tình huống khá bất thường ;-)

Cho rằng, những gì tôi sẽ làm là viết các bài kiểm tra JUnit của bạn để gọi một lớp GeneratedCode, và sau đó, khi bạn tải xuống mã, đổi tên lớp thành GeneratedCode, biên dịch và chạy thử nghiệm đơn vị của bạn.

0

Bạn nên tạo giao diện "giả" cho dịch vụ web của mình (a) hoạt động theo cùng một cách và (b) trả về câu trả lời đã biết.

Sau đó, bạn sẽ thực hiện một số thử nghiệm tích hợp khác với dịch vụ web trực tiếp, nơi một người xem kết quả và quyết định xem họ có hoạt động hay không.

+0

Xin chào Tôi chỉ làm rõ câu hỏi, đây không phải là để thử nghiệm webservice, tôi chỉ lấy các lớp từ nó. –

+0

Tôi ghét mocks. Nó thường gấp đôi công việc tạo ra dịch vụ web ngay từ đầu, và cuối cùng bạn sẽ dành tất cả thời gian gỡ lỗi của mình để tìm hiểu xem lỗi đó có trong dịch vụ web hay giả lập không. –

+0

@Paul Tomblin: Đúng và sai. Đó là nghĩa vụ phải làm việc nhiều hơn. Nếu mô hình của bạn đòi hỏi rất nhiều lần gỡ lỗi thì bạn không hiểu điều bạn đang chế nhạo đủ. Nếu dịch vụ web được xác định kém, thì, điều đó ngang bằng với khóa học. Việc gỡ lỗi mô hình thường đơn giản hơn việc gỡ lỗi ứng dụng, vì vậy nó sẽ phát triển trong thời gian dài. Nhiều thời gian hơn để xây dựng mô hình. Ít liên tục hơn để gỡ lỗi. –

2

Bạn có mục tiêu tương tự như tích hợp liên tục ;-)

Có lẽ một chút quá mức cần thiết cho nhiệm vụ đơn giản này, nhưng đây là cách tiêu chuẩn để có được một cái gì đó, một cái gì đó biên dịch và thử nghiệm một cái gì đó thường xuyên.

Ví dụ: bạn có thể thử hudson.

+0

Với tôi, nhiệm vụ là tự động xây dựng nhiều hơn sau đó tích hợp liên tục. hudson là một lời khuyên tốt nhưng tôi muốn sử dụng maven (hoặc ant) ​​đầu tiên và sử dụng hudson để thực thi các kịch bản xây dựng (kết thúc tận hưởng các báo cáo dựa trên web tuyệt vời :)) –

+1

"sth" nghĩa là gì? –

0

Bạn chỉ có thể kiểm tra các lớp được tạo sau khi chúng được xuất bản trên webservice không? Bạn không có cách nào để kiểm tra trong hoặc ngay sau thế hệ?

Một ý tưởng, nếu mã được tạo không phức tạp, hãy tải nó qua GroovyClassLoader và chạy thử nghiệm của bạn chống lại nó. Xem this page để biết các ví dụ.

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