2010-01-24 34 views

Trả lời

49

Đối tượng Mock là đối tượng được sử dụng để kiểm tra đơn vị. Nếu bạn có một đối tượng có các phương thức mà bạn muốn thử nghiệm, và các phương thức đó phụ thuộc vào một số đối tượng khác, bạn tạo một mô hình phụ thuộc hơn là một thực thể của sự phụ thuộc đó. Điều này cho phép bạn kiểm tra đối tượng của bạn trong sự cô lập.

Các khung Java phổ biến để tạo đối tượng giả bao gồm JMockEasyMock. Chúng thường cho phép bạn tạo các đối tượng giả có hành vi mà bạn có thể xác định, vì vậy bạn biết chính xác những gì mong đợi (theo như giá trị trả về và các hiệu ứng phụ) khi bạn gọi các phương thức trên đối tượng giả.

Ví dụ, một trường hợp sử dụng phổ biến có thể nằm trong ứng dụng MVC, nơi bạn có lớp DAO (đối tượng truy cập dữ liệu) và Bộ điều khiển thực hiện logic nghiệp vụ. Nếu bạn muốn đơn vị kiểm tra bộ điều khiển, và bộ điều khiển có một phụ thuộc vào một DAO, bạn có thể làm cho một giả của DAO mà sẽ trả về các đối tượng giả để điều khiển của bạn. Một điều quan trọng cần lưu ý là nó thường là trường hợp giả định các đối tượng thực hiện cùng một giao diện như các đối tượng mà họ đang chế nhạo - điều này cho phép mã của bạn xử lý chúng thông qua kiểu giao diện, như thể chúng là các thể hiện của điều thực sự.

+2

chỉ vì sở thích của riêng tôi: tên "giả" xuất phát từ đâu? –

+4

Vâng, chính từ "giả" có nghĩa là "giả". Âm thanh tốt hơn một chút so với "đối tượng giả". :) – Jeff

+23

Mock là một từ tiếng Anh có nghĩa là "bắt chước" hoặc "bắt chước". Các đối tượng giả bắt chước các phụ thuộc của đối tượng mà bạn đang thử nghiệm. – danben

1

Đối tượng giả là đối tượng được sử dụng trong thử nghiệm đơn vị. giúp bạn kiểm tra chức năng duy nhất bạn muốn kiểm tra. bởi vì tất cả các phụ thuộc có thể đạt được bằng cách chế nhạo những đối tượng phụ thuộc đó. Vì vậy, nếu kiểm tra vượt qua bạn sẽ chắc chắn rằng đơn vị của bạn theo thử nghiệm là chính xác.

Vì vậy, nhà văn thử nghiệm tạo ra chúng. Bạn có thể sử dụng EasyMock như một công cụ cho Mocking.

4

Trích từ đây: http://easymock.org/

Đơn vị kiểm tra là kiểm tra các đơn vị phần mềm trong sự cô lập. Tuy nhiên, hầu hết các đơn vị không hoạt động một mình, nhưng chúng cộng tác với các đơn vị khác. Để kiểm tra một đơn vị riêng biệt, chúng tôi phải mô phỏng các cộng tác viên trong bài kiểm tra . Đối tượng Mock là một thay thế thử nghiệm theo định hướng cho cộng tác viên. Đó là được định cấu hình để mô phỏng đối tượng nó thay thế theo một cách đơn giản. Ví dụ:

Ví dụ: nếu bạn muốn thử nghiệm các cuộc gọi http, bạn sẽ cần phải tạo các đối tượng yêu cầu thực tế, hoàn chỉnh với tất cả các phụ thuộc của chúng. Điều này thường có thể đòi hỏi rất nhiều nỗ lực, do đó việc sử dụng các đối tượng giả tạo cung cấp một đường dẫn nhanh hơn để tạo ra một biểu diễn chính xác của đối tượng bạn cần, mà không có chuỗi phụ thuộc dài.

5

Đối tượng giả cho phép bạn mô phỏng và xác minh các đối tượng thực, mà không thực sự chạy mã thực trong các đối tượng đó. Bạn có thể thiết lập một mô hình để trả về kết quả cụ thể trên các cuộc gọi phương thức, bạn có thể xác minh rằng phương thức đã hoặc không được gọi và các công cụ thú vị khác.

Mockito là thư viện đối tượng Java đơn giản và đơn giản.

14

Đối tượng mô phỏng và mô phỏng không dành riêng cho Java.Đối tượng giả là một thử nghiệm đơn vị kỹ thuật trong đó đoạn mã được thay thế bằng cách triển khai giả mạo mô phỏng mã thực. Điều này giúp người ta viết các bài kiểm tra đơn vị nhắm vào chức năng được cung cấp bởi lớp đang được kiểm tra.

Kiểm tra những bài viết này cung cấp một giới thiệu rất tốt để các khái niệm về chế giễu:
Mock Objects (PDF)
Endo-Testing: Unit Testing with Mock Objects (PDF)

Nếu bạn đang tìm kiếm một khuôn khổ giả cho kiểm tra đơn vị trong Java, hãy xem: Mockito. Tôi thấy nó hữu ích cho các bài kiểm tra đơn vị của tôi.

+1

Giấy "Mock Roles, Not Objects" của chúng tôi tốt hơn so với bài kiểm tra Endo gốc: http://www.mockobjects.com /files/mockrolesnotobjects.pdf –

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