2009-04-30 13 views
5

Sé que esto es bastante subjetivo, pero me estoy sumergiendo en las pruebas y aprendiendo acerca de la burla, y estoy tratando de determinar qué marco debo usar. Si pudiera decirme cuáles recomendó y lo más importante es por qué es mejor que otros que ha usado, me gustaría aplicar. O si alguien sabe dónde puedo obtener una comparación lado a lado que también sería útil.Buscando el mejor marco de burlarse de opensource para .net

+0

Para aquellos que todavía están pasando por esto - también pueden querer considerar cuáles de estos marcos tienen extensiones de automoción - por ejemplo, AutoFac y AutoFixture tienen compatibilidad con Moq, creo que ambas tienen soporte para algunas de las otras burlas marcos también (Rhino, NSubstitute, etc.). Pase algún tiempo en el administrador de paquetes también mirando qué tan populares son y qué tan recientemente se han actualizado al hacer una elección. – LightCC

Respuesta

3

También estoy usando RhinoMocks. Me gusta particularmente el patrón AAA (Arrange-Act-Assert). RhinoMocks hace que sea fácil establecer expectativas y verificarlas usando este patrón. La sintaxis usa 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 eso, y no es enorme, es que para simular un método, debe ser virtual. En cierto sentido, esto es bueno porque "te obliga" a refactorizar a las interfaces, pero puede ser complicado si realmente no se requiere una interfaz. Puede hacer que burlarse de algunas clases de framework sea más difícil. Puede evitar esto marcando los métodos de su clase virtual o, con las clases de marco, creando un contenedor en el que se burla. No creo que estos problemas sean exclusivos de RhinoMocks.

+1

No lo son, Moq tiene las mismas "limitaciones" en cuanto a que todo debe ser abstracto, implementar una interfaz o tener miembros virtuales. – TheMissingLINQ

0

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

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

+2

El problema con NMock, (al menos el problema cuando lo usé) era que todos los nombres de sus métodos eran cadenas. Esto significa que no obtiene ayuda del compilador cuando cambia las interfaces. También significa que las herramientas de refactorización no cambiarán las pruebas con éxito. Rhino y Moq al menos no se compilarán si cambias las interfaces y funcionan las herramientas de refactorización. –

+0

Comentario justo: piense que es hora de mirar a los demás. – Peanut

6

He usado Rhino.Mocks, Moq & NMock. Yo solía preferir Moq.

Ahora uso NSubstitute ... y encontré que su sintaxis era muy superior a la de moq y no sacrificas nada por medio del 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 en la no-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(); 
} 

punto final para su .. en github ...

http://nsubstitute.github.com/

Cuestiones relacionadas