2009-12-02 31 views
27

Tôi đang sử dụng nhiều bài kiểm tra đơn vị trong các dự án của mình và đọc tất cả thông tin tôi có thể trực tuyến và đang bị nhầm lẫn bởi rất nhiều thuật ngữ. Kết quả là tôi có thể sử dụng các cụm từ này không chính xác trong cuộc trò chuyện và tìm kiếm trên google.Tổng quan về thuật ngữ thử nghiệm đơn vị (stub vs mock, integration vs interactive)?

Ai đó có thể phác thảo tất cả các cụm từ thử nghiệm đơn vị như loại "giả" cũng như các loại thử nghiệm (tương tác và tích hợp) không?

+0

Liên quan: [whats-the-different-giữa-faking-mocking-and-stubbing] (http://stackoverflow.com/questions/346372/whats-the-difference-between-faking-mocking-and-stubbing) – nawfal

Trả lời

45

Khi nói đến mocks vs. fakes so với stubs, thực tế có một vài cách khác nhau mà mọi người giải thích chúng. Tôi thường mượn the meanings defined by Martin Fowler:

  1. Đối tượng sơ khai cung cấp phản hồi hợp lệ nhưng không có vấn đề gì khi bạn nhập vào, bạn sẽ luôn nhận được phản hồi tương tự.
  2. Đối tượng giả hoạt động như đối tượng thực, nhưng chúng đi theo cách đơn giản hơn - chẳng hạn như DAO sử dụng Bản đồ để lưu trữ dữ liệu thay vì cơ sở dữ liệu thực.
  3. Đối tượng giả được sử dụng trong các trường hợp thử nghiệm giả - chúng xác thực rằng một số phương thức nhất định được gọi trên các đối tượng đó.

Kiểm tra tương tác là một thuật ngữ chung đề cập đến các bài kiểm tra đơn vị đảm bảo rằng tương tác giữa các đối tượng là đúng (đảm bảo rằng các phương thức dự kiến ​​được gọi). Điều này trái ngược với thử nghiệm trạng thái (hoặc cổ điển), điều này không quan tâm điều gì xảy ra trong các phương thức, miễn là trạng thái kết quả là chính xác. Các loại thử nghiệm này được so sánh trong bài viết của Fowler mà tôi đã liên kết ở trên.

Integration testing thực sự không phải là một khía cạnh của thử nghiệm đơn vị, nó là một cấp cao hơn các bài kiểm tra đơn vị. Nó có các đơn vị khác nhau và xác minh rằng chúng hoạt động chính xác.

+8

Các định nghĩa của Test Doubles không phải của Fowler - chúng xuất phát từ cuốn sách tuyệt vời của Gerard Meszaros "xUnit Test Patterns", và Fowler tự do thừa nhận điều này. –

5

Fowler đã làm tất nhiên là một công việc tuyệt vời tại biệt Mocks and Stubs nhưng, với tôi, cuốn sách XUnit Test Patterns là tài liệu tham khảo và Tôi muốn đề nghị kiểm tra Mocks, Fakes, Stubs and Dummies để so sánh toàn diện.

Vâng, tôi biết, điều này gây nhầm lẫn và đó là lý do tại sao tôi khuyên bạn nên kiểm tra Mocks and Stubs aren't Spies, sau đó let’s spy và cuối cùng là Mockito - The New Mock Framework on the Block.

Về các loại khác nhau của các bài kiểm tra, một lời giải thích đơn giản có thể là (điều này không phải là một danh sách đầy đủ):

  • kiểm tra đơn vị: thử nghiệm một "đơn vị" duy nhất, một phương pháp, trong sự cô lập
  • hội nhập kiểm tra: kiểm tra sự tích hợp của một số đơn vị (phương pháp, các lớp học, các thành phần, các lớp)
  • chức năng kiểm tra: kiểm tra một end-to-end kịch bản (từ góc độ người dùng)

một các loại này hữu ích và không độc quyền, chúng thực sự không có cùng ý định.

3

Tôi đã đọc (và chân thành khuyên dùng) The Art of Unit Testing bởi Roy Osherove.Anh ta sử dụng một tập hợp thuật ngữ đơn giản.

Để diễn giải cuốn sách của ông ...

Tích hợp thử nghiệm - bất kỳ bài kiểm tra đó đạt bên ngoài của quá trình hiện tại hoặc đối tượng tương tác với cái gì khác

Tương tác thử nghiệm - một thử nghiệm trên đường các đối tượng đó hoạt động cùng nhau

Kiểm tra trạng thái - kiểm tra kết quả được tạo ra bởi một thao tác

Fake - bất kỳ độc trong đối tượng đó là sử dụng thay cho thật

Stub - một stand-trong đối tượng đó cung cấp một sự phụ thuộc theo yêu cầu của mã theo thử nghiệm

Mock - một stand-in được sử dụng để kiểm tra kết quả của thử nghiệm

Lưu ý rằng ở đây cả hai Sơ đồ và Mocks có thể được cung cấp bởi khung Mocking - sự phân biệt là nhiều về cách chúng được sử dụng như công nghệ được sử dụng.

9

này article từ Tạp chí MSN giải thích các điều khoản và đi vào một số chi tiết với các ví dụ và một số mã nguồn.

Về cơ bản đây là những đôi kiểm tra:

  • Dummy - Dummies không chứa thi
  • Stub - khai là triển khai tối thiểu của giao diện hoặc các lớp học cơ sở
  • Spy - một gián điệp sẽ ghi lại thành viên nào đã được gọi
  • Fake - thêm compl ex, một giả có thể trông giống như một thực hiện sản xuất
  • Mock - Một mô hình thường được tự động tạo ra bởi một thư viện mô hình và tùy thuộc vào cấu hình của nó, một mô hình có thể hoạt động giống như một hình nộm, vẫn còn sơ khai, hoặc một gián điệp
Các vấn đề liên quan