Buscando el mejor framework de simulación de código abierto para .net
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.
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 ...
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.