2011-09-04 64 views
12

Tôi là người dùng thời gian dài của Eclipse nhưng là một người mới khi nói đến JUnit. Tôi có rất nhiều dự án java và tôi muốn bắt đầu viết các trường hợp thử nghiệm xung quanh các phương thức trong các dự án đó. Tôi chỉ tự hỏi cách tốt nhất để thiết lập môi trường Eclipse cho mục đích này. Giả sử tôi có một dự án điển hình với một thư mục src điển hình trong một gói được chỉ định. Làm cách nào để đính kèm các trường hợp thử nghiệm vào dự án đó. Một số lo ngại: 1. Tôi không muốn các trường hợp thử nghiệm là một phần của bất kỳ bản dựng nào mà tôi tạo trên dự án. 2. Tôi muốn tham khảo các clases trong bộ thử nghiệm.Làm thế nào để sử dụng JUnit với Eclipse

Tôi có thiết lập một thư mục kiểm tra riêng trong gói tôi muốn kiểm tra không? Tôi có một gói thử nghiệm riêng biệt không? Cách tốt nhất để làm việc này là gì?

Trả lời

8

Nó khá chết đơn giản:

  • Kéo hoặc đặt file jar JUnit vào thư mục lib của bạn, sau đó sửa đổi dự án của bạn xây dựng các thiết lập bao gồm nó.
  • Tạo thư mục nguồn khác trong dự án của bạn được gọi là 'thử nghiệm'
  • Tạo các gói thử nghiệm của bạn bên dưới thư mục nguồn 'thử nghiệm'. Thực hành tốt nhất là bắt chước tên gói của ứng dụng của bạn.
  • Tạo các lớp thử nghiệm của bạn bên trong các gói thử nghiệm. Các phương pháp hay nhất là bắt chước các lớp ứng dụng của bạn yêu cầu thử nghiệm, nhưng nối thêm Kiểm tra ở cuối tên. Vì vậy, ví dụ như trong ứng dụng chính của bạn bạn có thể có một myapp.service.PrintService và như là một thử nghiệm tương ứng bạn sẽ phải myapp.service.PrintServiceTest
  • Mở rộng mỗi lớp thử nghiệm từ junit.framework.TestCase
  • Chạy thử nghiệm của bạn các lớp sử dụng TestRunner.

Khi bạn xây dựng gói triển khai của ứng dụng, chỉ cần loại trừ thư mục nguồn 'thử nghiệm'. Bây giờ, nếu bạn muốn thực sự thả chết tích hợp thử nghiệm dễ dàng sau đó sử dụng Maven để thiết lập dự án của bạn. Nó bắt đầu trong tất cả các thực hành tốt nhất cho bạn ngay lập tức.

+3

Vì JUnit đi kèm với nhật thực, bạn không cần tệp JAR, bạn có thể thêm nó làm thư viện trong cấu hình dự án, mặc dù bạn cần JAR nếu bạn muốn chạy các thử nghiệm từ Ant. Và nó đã không được cần thiết để mở rộng TestCase kể từ khi JUnit 4 được phát hành vào năm 2006. Bạn thực sự nên dành thời gian để tìm hiểu làm thế nào để sử dụng nó, vì nó đơn giản hóa một số điều rất nhiều. –

+0

Nếu bạn muốn đăng câu trả lời riêng biệt chi tiết cách sử dụng chú thích JUnit thì hãy làm như vậy. Đừng đặt câu hỏi về kiến ​​thức của tôi về công cụ này chỉ vì tôi chọn thực hiện các bài kiểm tra của tôi khác với bạn. – Perception

+4

Tôi sẽ thành thật quan tâm đến lý do tại sao người ta sẽ chọn để mở rộng TestCase ngày nay, khác hơn là thiếu quan tâm đến JUnit 4 vì JUnit 3 đã "đủ tốt". –

0

Một giải pháp đơn giản là tạo một thư mục nguồn khác dành riêng cho các lớp liên quan đến kiểm tra. Ví dụ: nếu các lớp học chính của bạn sống ở $PROJECT_ROOT/src, bạn có thể đặt các lớp học có liên quan đến bài kiểm tra của mình theo số $PROJECT_ROOT/src-test. Tôi không có Eclipse tiện dụng, nhưng tôi biết rằng bạn có thể thay đổi $PROJECT_ROOT/.classpath tập tin (XML của nó) để bao gồm thư mục mới này:

<classpath> 
    <classpathentry kind="src" path="src"/> 
    <classpathentry kind="src" path="src-test"/> <!-- ADD THIS ONE --> 
    ... 
</classpath> 

Bây giờ, tất cả các lớp học thử nghiệm của bạn sẽ thấy những lớp học chính, nhưng họ đã thắng không được bao gồm trong bản dựng của bạn. Tôi thường đảm bảo rằng lớp thử nghiệm sống trong cùng một gói với lớp mà nó đang thử nghiệm. Bằng cách đó, mọi thành viên protected đều có thể được truy cập từ mã kiểm tra.

3

Cách tốt nhất (hoặc ít nhất là phổ biến nhất) để tổ chức mã kiểm tra là có một thư mục nguồn riêng biệt cho mã thử nghiệm, do đó giữ cho nó tách biệt độc đáo. Trong nhật thực, bạn có thể thêm thư mục nguồn dưới "Build Path" trong thuộc tính của dự án. Tuy nhiên, bạn cũng nên giữ các lớp thử nghiệm trong cùng một gói với các lớp cần kiểm tra (tức là có cùng một phân cấp gói trong thư mục nguồn thử nghiệm). Điều này cho phép bạn kiểm tra mã để gọi các gói riêng và các phương thức được bảo vệ, làm cho việc kiểm tra hành vi nội bộ dễ dàng hơn nhiều mà không nên được hiển thị trong API công khai.

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