Pregunta

Sé que esto es bastante subjetivo, pero me estoy sumergiendo en las pruebas y aprendiendo sobre la burla, y estoy tratando de averiguar qué marco debería usar. Si pudiera decirme cuáles recomendó y, lo que es más importante, por qué es mejor que otros que ha utilizado agradecería. O si alguien sabe dónde puedo obtener una comparación lado a lado que también podría ser útil.

¿Fue útil?

Solución

Moq es el más avanzado. Utiliza todas las características de .NET 3.5 y C # 3.0. Esto sería interesante:

Otros consejos

He usado Rhino.Mocks, Moq & amp; NMock. Solía ??preferir Moq.

Ahora uso NSubstitute ... y descubrí que su sintaxis era muy superior a la de moq y no sacrificas nada por el poder.

Solía ??escribir pruebas como esta:

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

Ahora me deleito con la falta de lambda

[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 final para ... está en github ...

http://nsubstitute.github.com/

Me gusta RhinoMocks, pero es el único que he usado:}

Esto parece prometedor: http://code.google.com/p/mocking-frameworks-compare/

También estoy usando RhinoMocks. Me gusta particularmente el patrón AAA (Arrange-Act-Assert). RhinoMocks facilita la configuración de las expectativas y las verifica mediante este patrón. La sintaxis utiliza lambdas y encadenamiento, que encaja muy bien con LINQ. La similitud en la sintaxis ayuda a comprender y permite que el código sea más compacto. El único problema que tengo con él, y no es tan grande, es que para burlarse de un método necesita ser virtual. En cierto sentido, esto es bueno porque "obliga" debe refactorizar las interfaces, pero puede ser un dolor si una interfaz no es realmente necesaria. Puede hacer que burlarse de algunas clases marco sea más difícil. Puede solucionar esto marcando sus métodos de clase virtual o, con clases de marco, creando un contenedor que se burla en su lugar. No creo que estos problemas sean exclusivos de RhinoMocks.

Puede encontrar serie de Richard Banks Publicaciones que comparan marcos de burla útiles.

Nota : en aras de la divulgación completa, soy coautor de NSubstitute que resulta bastante favorable en la comparación. :)

He usado NMock y creo que es excelente. http://www.nmock.org/

Sin embargo, este es el único que he usado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top