To kill a mockingbird

March 15, 2009 12:09
There is another update for Mocking Frameworks Compare that allows you to evaluate the performance of the frameworks. The same standard mocking operations being called in a sophisticated loop[1]. Nothing fancy.

For now, don't expect any comments on whether this comparison is relevant or not, whether it's important or not, and what could you do with it. Only numbers.

But they are nice.

Mocking Frameworks Compare

February 8, 2009 21:54
As another milestone of my ardour for mocking, I've started a small open source project. It provides a unified set of tests written against Moq, NMock2, Rhino Mocks and Typemock Isolator, so that you can easily compare the frameworks and make an informed decision when picking one up.

Unfortunately, I wasn't able to finish the test for TypeMock because the trial version of Isolator had expired. I asked for an open source license about a week ago but still no answer (although they claim to answer within 48 hours). We'll see, hopefully I'd find some time to contact them again next week. Isolator guys sent me the open source license this morning (February 15). Cool stuff - Isolator tests are in now!

In the meantime - go ahead. It's here.

Touching a hot iron: finishing off

January 18, 2009 22:41

Finishing off this lengthy soliloquy about different mocking frameworks, here's a small summary.

Comparison of different mocking frameworks. NMock2 vs Moq vs Rhino Mocks vs Typemock Isolator - it's all here.

[Update: there's a new comparison available]

Touching a hot iron: Rhino Mocks

December 28, 2008 21:28

A while ago, in order to understand Rhino Mocks you had to get into its Record/Replay model: record the expectations first, and then playback the scenario using the mocked objects.

This has been claimed as clumsy and weird by a lot of people (especially those who don’t know much about unit testing). Once you get used to it, it becomes sort of OK, but still it's been considered as a chink in Rhino armor.

In "old"
Rhino Mocks our touch-and-yell test[1] looks like

public void TouchHotIron_Yell()
    var mocks = new MockRepository();
    var hand = mocks.StrictMock<IHand>();
    var mouth = mocks.StrictMock<IMouth>();
    using (mocks.Record()) {
        Expect.Call(() => hand.TouchIron(null)).Constraints(Is.Anything()).Throw(new BurnException());
    using (mocks.Playback()) {
        var brain = new Brain(hand, mouth);
        brain.TouchIron(new Iron { IsHot = true });