2012-01-09 28 views
5

Tôi muốn kiểm tra mã của mình nhưng tôi nhận thấy rằng một số lớp logic nghiệp vụ đòi hỏi rất nhiều đối tượng có rất nhiều trạng thái. Nhưng thực sự giao tiếp giữa các lớp này được giới hạn ở 1 hoặc 2 phương pháp.Java: giải nén các giao diện chỉ để thử nghiệm

Đó là phong cách tốt nếu tôi tạo ra một giao diện với 2 phương pháp này và trong thử nghiệm của tôi chỉ cần tạo ra một đối tượng giả mà không có gì?

Mã sau đó sẽ có nhiều giao diện hơn mà không thực sự cần thiết, đó là lý do tại sao tôi không chắc đó có phải là ý tưởng hay không?

Trả lời

6

Mặc dù có giao diện là ý tưởng hay, bạn không cần giao diện để thực hiện chế độ nhạo báng. EasyMock, Mockito và PowerMock đều cho phép mô phỏng các lớp bê tông. Vì vậy, cho rằng, bạn có thể để lại mã như là và sử dụng Mockito (yêu thích cá nhân của tôi) để thử các lớp học tiêm.

FYI, các mock không nên "không làm gì cả". Họ nên được kiểm tra với mỗi giá trị trả về có thể và mỗi ngoại lệ có thể bị ném.

+1

Theo tài liệu ít nhất 2.4, EasyMock * có * cho phép mô phỏng giao diện. –

+0

Tôi đã sửa chữa. –

+0

Các phương thức giả tạo kích hoạt tác dụng phụ đối với các gói và hệ thống khác mà tôi không thực sự quan tâm trong thử nghiệm, bởi vì tôi chỉ muốn thử nghiệm một khía cạnh riêng biệt. Mockito rất thú vị, tôi sẽ xem xét điều đó. –

2

Miễn là các giao diện nắm bắt các khái niệm quan trọng, càng có nhiều dấu hiệu (IMHO). Xuống đường, bạn thậm chí có thể thấy mình tách các phần của các lớp không liên quan đến giao diện vào các lớp khác hoặc tạo các triển khai thay thế và sau đó chúng kết thúc rõ ràng hơn trong mã sản xuất.

Như đã lưu ý trong câu trả lời khác, không phải tất cả các khuôn khổ mocking đều yêu cầu giao diện và nếu chúng thực sự chỉ cho phép chế nhạo, bạn có thể không cần đến chúng.

Nếu mocks của bạn không thực sự làm bất cứ điều gì, chúng có thể được gọi là một cách thích hợp hơn. Thông thường, mocks thực được sử dụng để xác minh rằng các cuộc gọi đến chúng được thực hiện một cách chính xác, và họ có một vai trò rất tích cực trong các bài kiểm tra.

+0

Được rồi tôi đã sử dụng từ sai, tôi muốn thử nghiệm mã của tôi :-) –

+0

Tốt thôi, nhưng bạn có thể muốn thử thực sự chế nhạo, nếu tương tác phức tạp. –

+0

Vâng nó thực sự là cả hai tôi nhìn vào mã. Thử nghiệm là khó hơn tôi mặc dù. Thực sự phải có được chất lượng mã của tôi chuyển sang thử nghiệm. –

2

Bất kể khía cạnh thử nghiệm, nếu bạn nhận thấy rằng bạn chỉ cần một vài phương pháp cụ thể trong một số phần của mã của bạn, tôi khuyên bạn nên trích xuất giao diện chụp các phương thức này. Nó sẽ làm rõ kiến ​​trúc của bạn và giảm khớp nối của mã của bạn (trên đầu trang của việc làm cho nó dễ dàng hơn để kiểm tra).

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