2008-09-17 27 views
11

Công cụ mã nguồn mở/tốt nhất, tốt nhất để tự động tạo các thử nghiệm đơn vị Java là gì? Tôi biết, các bài kiểm tra đơn vị không thể thực sự phục vụ cùng mục đích như các bài kiểm tra TDD bình thường mà tài liệu và điều khiển thiết kế của hệ thống. Tuy nhiên, các thử nghiệm đơn vị được tạo tự động có thể hữu ích nếu bạn có một bộ mã kế thừa khổng lồ và muốn biết liệu những thay đổi mà bạn được yêu cầu thực hiện sẽ có tác dụng phụ không mong muốn, không rõ ràng.Tự động tạo đơn vị thử nghiệm cho mã Java cũ

Trả lời

4

Không miễn phí. Không phải mã nguồn mở. Nhưng tôi đã tìm thấy AgitarOne Agitator (http://www.agitar.com/solutions/products/agitarone.html) là REALLY tốt để tự động tạo ra các bài kiểm tra đơn vị VÀ tìm kiếm các hiệu ứng phụ không mong muốn

+0

Tôi rất thích để xem việc triển khai mã nguồn mở của một cái gì đó như Agitar - đó là loại điều mà Nguồn mở nên thực sự tốt cho. – Vihung

3

Thành thật mà nói, tôi có lẽ sẽ không làm điều này. Các xét nghiệm đơn vị được phân lập và bạn sẽ không thực sự biết nếu bạn có "tác dụng phụ không mong muốn, tối nghĩa" bởi vì mọi thứ đều được ngăn chặn từ những thứ khác gây ra tác dụng phụ. Do đó, bạn cần tích hợp hoặc kiểm tra hệ thống và rằng không phải là thứ bạn có thể tự động hóa.

Xây dựng một vài bài kiểm tra hệ thống cấp cao, đầu cuối cung cấp cho bạn mức độ tin cậy và sau đó sử dụng kiểm tra mức độ phù hợp để tìm hiểu những gì bạn đã bỏ qua. khó khăn hơn để chỉ ra nguyên nhân chính xác của họ, nhưng ngược lại là bạn sẽ có nhiều khả năng nhìn thấy các lỗi.

Khi bạn tìm thấy lỗi, hãy viết các bài kiểm tra đơn vị chỉ dành cho chúng. Khi bạn di chuyển về phía trước, bạn có thể sử dụng TDD cho các bit bạn muốn tái cấu trúc.

Tôi biết điều này có lẽ không phải là câu trả lời bạn muốn nghe, nhưng tôi đã thử nghiệm nhiều, nhiều năm và đây là một cách tiếp cận vững chắc (mặc dù tôi khó gọi nó là phương pháp duy nhất :)

+0

làm bổ sung cho phương pháp này tôi khuyên bạn nên đọc http://www.objectmentor.com/resources/articles/WorkingEffectivelyWithLegacyCode.pdf (cảnh báo PDF) và http://www-128.ibm.com/developerworks/java/library/j-legacytest.html Tôi không nghĩ rằng bạn thực sự muốn tự động phát hiện các thử nghiệm – Jean

3

Thật thú vị, nhưng như vậy tạo ra các bài kiểm tra đơn vị thực sự có thể hữu ích. Nếu bạn đang làm việc trên một ứng dụng kế thừa, sẽ rất khó để viết các bài kiểm tra đơn vị chính xác, hiện đại.

Các thử nghiệm được tạo như vậy (nếu bạn có cách tạo khóa học) có thể đảm bảo rằng hành vi mã vẫn còn nguyên vẹn trong các thay đổi, sau đó có thể giúp bạn tái cấu trúc mã và viết kiểm tra tốt hơn.

Bây giờ, hãy về số tự tạo. Tôi không biết về bất kỳ công cụ ma thuật nào, nhưng bạn có thể muốn tìm kiếm chức năng JUnit về việc bao gồm một số thử nghiệm trong javadocs cho các phương thức. Điều này sẽ cho phép bạn viết một số bài kiểm tra đơn giản. Và có, nó thực sự có giá trị nào đó.

Thứ hai, bạn chỉ có thể viết các bài kiểm tra "lớn" bằng tay. Tất nhiên, đây sẽ không phải là bài kiểm tra đơn vị mỗi se (không cô lập, tác dụng phụ tiềm ẩn, v.v), nhưng có thể là bước đầu tiên tốt. Đặc biệt là nếu bạn có ít thời gian và một ứng dụng kế thừa.

Mẹo bổ sung! Có một cuốn sách tuyệt vời "Làm việc hiệu quả với mã di sản" với các ví dụ trong Java, bao gồm các kỹ thuật phù hợp để sử dụng trong các tình huống như vậy. Thật không may bạn sẽ phải làm một số điều bằng tay, nhưng bạn sẽ phải làm điều đó ở một số bước anyway.

3

Plugin Coview cho Eclipse (http://www.codign.com/products.html) chỉ là công việc. Tôi quan tâm đến việc tạo ra các bài kiểm tra bao gồm tất cả các đường dẫn trong mã, và điều này dường như làm điều đó. Nó cũng tạo ra các mocks mà nên tiết kiệm cho tôi tấn thời gian.

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