我知道这是相当主观的,但我深入检测和学习的嘲讽,而我试图这一框架,我应该使用。如果你可以请告诉我这些是你推荐和最重要的是 为什么它比其他人好你使用 我会aprpeciate.或者如果有人知道我在哪里可以得到一边比较,这将也是有帮助的。

有帮助吗?

解决方案

其他提示

我使用过Rhino.Mocks,Moq& NMock。我以前更喜欢Moq。

我现在使用NSubstitute ...并且发现它的语法远远优于moq的语法,并且你不会通过权力牺牲任何东西。

我曾经写过这样的测试:

[Test]
public void SomeOtherTest()
{
    //Arrange
    var mock = new Mock<IFoo>();
    var sut = new SystemUnderTest(mock.Object); //never liked doing it this way...
    mock.Setup(m => x.Bar()).Returns("A whole bunch of ceremonial syntax..");
    //Act
    sut.DoSomething();
    //Assert
    mock.Verify(m => m.Baz()); //Baaaaah, more laaaaambdas
}

现在我陶醉于非lambda-eryness

[Test]
public void NSubTest()
{
    var mock = Substitute.For<IFoo>();
    var sut = new SystemUnderTest(mock); //much nicer!
    mock.Bar().Returns("Look ma! No lambdas!");

    sut.DoSomething();

    mock.Received().Baz();
}

最后一点......它在github上......

http://nsubstitute.github.com/

我喜欢RhinoMocks,但它是我用过的唯一一个:}

这看起来很有希望: http://code.google.com/p/mocking-frameworks-compare/

我也在使用RhinoMocks。我特别喜欢AAA(Arrange-Act-Assert)模式。 RhinoMocks可以轻松设置期望并使用此模式检查它们。语法使用lambdas和chaining,它非常适合LINQ。语法的相似性有助于理解并允许代码更紧凑。我遇到的唯一问题,并不是很大,是为了模拟一个需要虚拟的方法。从某种意义上说,这是好事,因为它“强迫”你要重构接口,但如果不真正需要接口,那就太痛苦了。它可以使一些框架类的模拟更加困难。您可以通过将类方法标记为虚拟来解决此问题,或者使用框架类创建一个您模拟的包装器。我不认为这些问题是RhinoMocks特有的。

您可能会发现Richard Banks的系列帖子比较模拟框架有用。

注意:为了充分披露,我是 NSubstitute的合着者在比较中非常有利。 :)

我使用了NMock并认为它很棒。 http://www.nmock.org/

但是 - 这是我用过的唯一一个。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top