问题
I cannot find a specific feature-by-feature comparison of Moq and Rhino. All the questions are "which do you like better and why", or "here's how you do a simple mock in rhino and how it's done in moq".
I cannot find a deep comparison anywhere. I'm aware of the syntax differences, I'm not looking for answers about that. I am looking for a capability comparison. For example:
Rhino has Expect.On() for threaded mocking. Can Moq do this?
What about Multi-mocking (implementing multiple interfaces with one mock). Can Moq do this?
I believe Moq can now mock Protected members. Can Rhino do this?
Edit: I ended up looking at some of the other .Net frameworks as well.
回答1:
Thanks to those that responded over the last few weeks. I ended up writing a blog post about my findings, since I had to do so much digging that it seemed like I might as well summarize them in the hopes of helping others. The chart I posted organizes my findings:
One caveat, which I touched on in the blog post, is that the chart is useful for checking the capabilities, but the real advantages to most frameworks are their unique features. I chose Moq in the end because of the easy to use API. Also, all the information is subject to errors and change - if you disagree with something on the chart, please post a comment.
回答2:
I'm not an expert by any means, but I believe the Rhino added some of the Moq syntax so that the learning curve has been reduced to what you'd expect with MoQ. I worked with both with testing and some of the syntax was almost identical. I was initially going to go with MoQ as it was easier, but then my bud showed me the latest updates and how similar they were. Just letting ya know.
回答3:
Rhino has GetArgumentsForCallsMadeOn() which IMO makes it easier to verify arguments in some cases.
回答4:
Just for completeness I will note that there is now NMock3 on CodePlex. It has easy migration from NMock2, just replace the reference to NMock2.dll with a reference to NMock3.dll. It adds type safety and support for refactoring.
回答5:
I might add "Behavior Verification" into these. That seems to be Moq's biggest limitation, which Rhino (not sure about others) has no problem with.
来源:https://stackoverflow.com/questions/690769/what-are-the-capabilities-of-moq-and-rhino-mocks