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
Respuesta
Moq es el más avanzado. Utiliza todas las características de .NET 3.5 y C# 3.0. Esto sería interesante:
+1! He usado NMock, Rhino Mocks y Moq. Moq es de lejos el mejor en mi opinión –
me gusta RhinoMocks, pero es el único que he utilizado:}
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 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.
No lo son, Moq tiene las mismas "limitaciones" en cuanto a que todo debe ser abstracto, implementar una interfaz o tener miembros virtuales. – TheMissingLINQ
He usado NMock y creo que es excelente. http://www.nmock.org/
Sin embargo, este es el único que he usado.
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. –
Comentario justo: piense que es hora de mirar a los demás. – Peanut
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 ...
Puede encontrar Richard Banks 'series of posts comparing mocking frameworks útil.
Nota: En aras de la divulgación completa, soy co-autor de NSubstitute que sale muy favorablemente en la comparación.:)
- 1. mejor marco COI para .Net
- 2. OpenSource .net SMS library
- 3. Opensource .Net ¿Servidor Jabber/XMPP?
- 4. ¿Qué marco de burla de C# aprovecha mejor .NET 4?
- 5. Buscando un marco de comunicación para delphi
- 6. Marco NLP para .NET
- 7. Marco de video por marco buscando
- 8. Burlarse de tontos?
- 9. ¿Para burlarse o no para burlarse?
- 10. Buscando un .NET Configuration Framework
- 11. Buscando un .Net ORM
- 12. Buscando un marco de diseño gráfico para iOS
- 13. Tropezar/burlarse de una base de datos en .Net
- 14. Buscando .NET BuildServer SaaS
- 15. Mejor marco de burla para Silverlight 5
- 16. Marco para .net Reflection.Emit simplification?
- 17. Mejor marco de caché para Java
- 18. Desarrollar una aplicación web con Mono (opensource .NET) ¿algún ejemplo?
- 19. La mejor manera de burlarse del servicio web de Java
- 20. El mejor enfoque para diseñar el marco para el sistema de asignación de distintivos
- 21. ¿Cuál es el mejor marco de simulación para VB.NET?
- 22. ¿El mejor marco de pruebas unitarias para Clojure?
- 23. Mejor marco de JavaScript para aplicaciones de escritorio
- 24. ¿Mejor marco de informes de fallos para aplicaciones de escritorio .NET?
- 25. ¿Una alternativa de Opensource para basecamp?
- 26. ¿Buen proyecto opensource JS para aprender?
- 27. Marco de simulación de eventos discretos para .NET
- 28. Sistemas distribuidos, ¿mejor marco?
- 29. Buscando la mejor aplicación de encuesta Asp.net
- 30. Cómo compilar el libc opensource de apple?
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