2009-03-27 18 views
43

Tôi không thể tìm thấy so sánh từng tính năng cụ thể của Moq và Rhino. Tất cả các câu hỏi là "mà bạn thích tốt hơn và tại sao", hoặc "đây là cách bạn làm một mô hình đơn giản trong tê giác và làm thế nào nó được thực hiện trong moq".Khả năng của Moq và Rhino.mocks là gì?

Tôi không thể tìm thấy so sánh sâu ở bất kỳ đâu. Tôi nhận thức được sự khác biệt về cú pháp, tôi không tìm câu trả lời về điều đó. Tôi đang tìm kiếm khả năng so sánh. Ví dụ:

  • Rhino có Expect.On() cho luồng chế nhạo. Moq có thể làm điều này không?

  • Điều gì về Multi-mocking (triển khai nhiều giao diện với một mô hình). Moq có thể làm điều này không?

  • Tôi tin rằng Moq hiện có thể chế nhạo các thành viên được bảo vệ. Rhino có thể làm được điều này không?

Sửa: tôi đã kết thúc xem xét một số các khuôn khổ Net khác nữa.

+0

cũng xem http://stackoverflow.com/questions/642620/what-should-i-consider-when-choosing-a-mocking-framework-for-net –

+0

- Kiểm tra [tại đây] (http: // mã .google.com/p/moq/wiki/QuickStart) cho các tính năng của moq - Kiểm tra [ở đây] (http://ayende.com/projects/rhino-mocks.aspx) để biết các tính năng của Rhino Mocks – rguerreiro

Trả lời

88

Nhờ những người đã phản hồi trong vài tuần qua. Tôi đã kết thúc viết một bài đăng blog về những phát hiện của mình, vì tôi phải đào bới rất nhiều đến mức dường như tôi cũng có thể tóm tắt chúng với hy vọng giúp đỡ người khác. Biểu đồ tôi gửi tổ chức phát hiện của tôi:

alt text

Một caveat, mà tôi đề cập đến trong bài viết trên blog, đó là bảng xếp hạng là hữu ích để kiểm tra khả năng, nhưng lợi thế thực sự đối với hầu hết các khuôn khổ là duy nhất của họ Tính năng, đặc điểm. Tôi đã chọn Moq cuối cùng vì dễ sử dụng API. Ngoài ra, tất cả thông tin đều bị lỗi và thay đổi - nếu bạn không đồng ý với nội dung nào đó trên biểu đồ, vui lòng đăng nhận xét.

+0

Tôi cập nhật các biểu đồ một chút. Có thể có một vài sửa đổi đối với nó trong thời gian tới, tôi có một số mục hàng bổ sung khác có thể được thêm vào. – womp

+3

+1 biểu đồ đẹp, tạo một bản tóm tắt tốt – zombat

+0

Hey @womp, bạn có thể vui lòng tải lại biểu đồ không? Các liên kết được chuyển hướng đến một số dấu hiệu Nhật Bản ;-) –

2

Tôi không phải là chuyên gia bằng bất kỳ cách nào, nhưng tôi tin rằng tê giác đã thêm một số cú pháp Moq để đường cong học tập đã được giảm xuống theo những gì bạn mong đợi với MoQ. Tôi đã làm việc với cả hai với thử nghiệm và một số cú pháp gần như giống hệt nhau. Ban đầu tôi sẽ đi với MoQ vì nó dễ dàng hơn, nhưng sau đó nụ của tôi chỉ cho tôi những cập nhật mới nhất và chúng giống như thế nào. Chỉ cần để cho bạn biết.

+0

Tôi thực sự thấy rằng là một trong những điều khiến Rhino khó hơn. Hầu như tất cả các tài liệu hướng dẫn cho các cú pháp cũ hơn, vì vậy bạn sẽ kết thúc chúng lên khi xem các ví dụ, dẫn đến tất cả các loại lỗi lạ:/ – womp

+2

Đồng ý.Có vẻ như họ đã cố gắng làm những việc nhất định theo nhiều cách mà không loại bỏ cách "cũ" của việc đó. Tôi cho rằng đó là khả năng tương thích. Tôi thành thật có sự hiểu biết tốt hơn về MoQ chỉ vì nó không cố gắng tìm ra một Mock hay một cú pháp giả tạo và không có tính cách sôi nổi. MoQ của khá đẹp với điều đó – rball

1

Tê giác có GetArgumentsForCallsMadeOn() mà IMO giúp dễ dàng xác minh đối số trong một số trường hợp.

-1

Tôi có thể thêm "Xác minh hành vi" vào các mục này. Đó dường như là giới hạn lớn nhất của Moq, mà Rhino (không chắc chắn về những người khác) không có vấn đề gì.

+2

Giới hạn về xác minh hành vi trong Moq là gì? Tôi chưa gặp bất kỳ hạn chế nào. Nó có Verify() và VerifyAll(), và bạn có thể đặt bất kỳ lệnh Setup() nào thành Verifiable bất kể giá trị trả về. – womp

0

Chỉ để hoàn thành, tôi sẽ lưu ý rằng hiện có NMock3 trên CodePlex. Nó có dễ dàng di chuyển từ NMock2, chỉ cần thay thế các tham chiếu đến NMock2.dll với một tham chiếu đến NMock3.dll. Nó bổ sung thêm loại an toàn và hỗ trợ cho việc tái cấu trúc.