Tôi bắt đầu theo cách tương tự (viết mocks bằng tay) và bây giờ tôi đã gần như hoàn toàn chuyển sang EasyMock.
Tôi thấy rằng việc sử dụng EasyMock thường nhanh hơn và linh hoạt hơn.
Thông thường lần đầu tiên tôi cần một mô hình, tôi có thể có nó trong một vài dòng mã với EasyMock, trong khi bằng tay tôi cần triển khai giao diện cần thiết (đủ công bằng, điều này có thể được tạo ra bởi một IDE như IntelliJ) và sau đó thêm mã cần thiết để tạo ra phản hồi cần thiết và/hoặc để cho phép cảm nhận ảnh hưởng của các cuộc gọi đến nó.
Tốt, có thể nói, đó chỉ là chi phí một lần. Lần sau tôi có thể tái sử dụng tay viết một cách vui vẻ ... Tôi thấy đó không phải là trường hợp. Trong một thử nghiệm khác, tôi có thể cần một mô hình của cùng một lớp với hành vi khác nhau. Ví dụ. các phương thức khác nhau được gọi, và/hoặc kết quả khác nhau được mong đợi. Một trường hợp cụ thể là khi giả định được ném một ngoại lệ trong một trường hợp thử nghiệm, nhưng không phải trong trường hợp khác. Tốt, tôi có thể thêm một số tham số vào nó để điều khiển hành vi động. Sau đó, đối với bài kiểm tra tiếp theo, một số thông số khác để kiểm soát nhiều hành vi hơn ... vì vậy tôi kết thúc với việc thực thi mô hình phức tạp hơn, đó là sự phụ thuộc cho các bài kiểm tra đơn vị nhiều hơn - đặt ra cũng có nguy cơ vô tình làm hỏng các thử nghiệm cũ hơn.
Trái ngược với điều này, với EasyMock tôi có thể định cấu hình mocks của mình một cách độc lập cho mỗi thử nghiệm. Do đó, hành vi được kiểm soát rõ ràng và hiển thị trong chính mã kiểm thử đơn vị, và không có nguy cơ tác dụng phụ.
Chưa kể rằng với EasyMock bạn có thể xác minh rằng các phương thức được yêu cầu được gọi theo thứ tự bắt buộc, nếu bạn cần (và tôi thực hiện, mọi lúc và sau đó). Thực hiện điều này bằng tay (đặc biệt là trong một thời trang chung chung) sẽ là khá đau ở cổ, không có lợi ích bổ sung.
Nguồn
2010-05-04 12:13:59
Ngoài ra, hãy xem http://stackoverflow.com/questions/1717107/why-do-we-need-mocking-frameworks – Finglas