Domanda

So che questo è abbastanza soggettivo, ma mi sto tuffando nei test e imparando a deridere, e sto cercando di capire quale quadro dovrei usare. Se potessi, per favore, dimmi quali hai raccomandato e, soprattutto, perché è meglio di altri che hai usato mi piacerebbe. O se qualcuno sa dove posso ottenere un confronto side-by-side che sarebbe anche utile.

È stato utile?

Soluzione

Moq è il più avanzato. Utilizza tutte le funzionalità di .NET 3.5 e C # 3.0. Questo sarebbe interessante:

Altri suggerimenti

Ho usato Rhino.Mocks, Moq & amp; NMock. Preferivo Moq.

Ora uso NSubstitute ... e ho scoperto che la sua sintassi era di gran lunga superiore a quella di moq e che non sacrifichi nulla per potere.

Scrivevo test come questo:

[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
}

Ora mi diletto nel non-lambda-eritema

[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();
}

Punto finale per ... è su github ...

http://nsubstitute.github.com/

Mi piace RhinoMocks, ma è l'unico che ho usato:}

Sembra promettente: http://code.google.com/p/mocking-frameworks-compare/

Sto anche usando RhinoMocks. Mi piace particolarmente il modello AAA (Arrange-Act-Assert). RhinoMocks semplifica l'impostazione delle aspettative e la verifica utilizzando questo modello. La sintassi utilizza lambda e concatenamento, che si adattano molto bene a LINQ. La somiglianza nella sintassi aiuta a comprendere e consente al codice di essere più compatto. l'unico problema che ho con esso, e non è enorme, è che per deridere un metodo deve essere virtuale. In un certo senso questo è positivo perché "forza". rifattorizzare le interfacce, ma può essere una seccatura se un'interfaccia non è davvero necessaria. Può rendere più difficile deridere alcune classi di framework. Puoi aggirare il problema contrassegnando i metodi della tua classe come virtuali o, con le classi del framework, creando un wrapper che invece deridi. Non penso che questi problemi siano unici di RhinoMocks.

Potresti trovare la serie di Richard Banks messaggi che mettono a confronto quadri di derisione utili.

Nota : nell'interesse della divulgazione completa, sono coautore di NSubstitute che risulta piuttosto favorevole nel confronto. :)

Ho usato NMock e penso che sia eccellente. http://www.nmock.org/

Tuttavia, questo è l'unico che ho usato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top