Question

Je sais que cela reste assez subjectif, mais je me lance dans les tests et l’apprentissage de la moquerie, et j’essaie de déterminer le cadre que je devrais utiliser. Si vous pouviez me dire quelles recommandations vous avez recommandées et surtout pourquoi elles sont meilleures que les autres que vous avez utilisées , j'apprécierais. Ou si quelqu'un sait où je peux obtenir une comparaison côte à côte, ce serait également utile.

Était-ce utile?

La solution

Moq est le plus avancé. Il utilise toutes les fonctionnalités de .NET 3.5 et C # 3.0. Ce serait intéressant:

Autres conseils

J'ai utilisé Rhino.Mocks, Moq & amp; NMock. J'avais l'habitude de préférer Moq.

J’utilise maintenant NSubstitute ... et j’ai trouvé que sa syntaxe était de loin supérieure à celle de moq et que vous ne sacrifiez rien au moyen du pouvoir.

J'écrivais des tests comme celui-ci:

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

Maintenant, je me délecte de la non-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();
}

Dernier point pour… c'est sur github ...

http://nsubstitute.github.com/

J'aime RhinoMocks, mais c'est le seul que j'ai utilisé:}

Cela semble prometteur: http://code.google.com/p/mocking-frameworks-compare/

J'utilise aussi RhinoMocks. J'aime particulièrement le motif AAA (Arrange-Act-Assert). RhinoMocks facilite la configuration des attentes et leur vérification à l'aide de ce modèle. La syntaxe utilise lambdas et chaining, ce qui s’intègre très bien dans LINQ. La similarité de syntaxe facilite la compréhension et permet au code d'être plus compact. le seul problème que j'ai avec elle, et ce n’est pas énorme, c’est que pour pouvoir se moquer d’une méthode, il faut qu’elle soit virtuelle. En un sens, c’est bien parce que cela "force" vous refactorisez les interfaces, mais cela peut être difficile si une interface n’est pas vraiment requise. Cela peut rendre plus difficile de se moquer de certaines classes du framework. Vous pouvez contourner ce problème en marquant vos méthodes de classe comme virtuelles ou, avec les classes d'infrastructure, en créant un wrapper que vous simulez. Je ne pense pas que ces problèmes soient spécifiques à RhinoMocks.

Vous pouvez trouver la série de Richard Banks messages comparant des cadres moqueurs utiles.

Remarque : dans l'intérêt d'une divulgation complète, je suis co-auteur de NSubstitute. qui ressort assez favorablement dans la comparaison. :)

J'ai utilisé NMock et je pense que c'est excellent. http://www.nmock.org/

Cependant, c’est le seul que j’ai utilisé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top