2008-08-05 9 views

Respuesta

7

Utilizamos MbUnit y Rihno Mocks y demuestran funcionar muy bien juntos. Al hacer TDD casi seguramente necesitará hacer alguna forma de inyección de dependencia, mientras que esto se puede hacer manualmente, vale la pena mirar un contenedor IoC como Castle Windsor.

Vale la pena mirar las pantallas de John Paul Bodhood para que comiences. JPB's Blog

2

NUnit es siempre uno de mis favoritos. Sin embargo, si usa TFS como control de origen, le sugiero que se quede con Microsoft Stack.

+0

No hay razones de peso para usar MS Test sobre NUnit o MbUnit. Es completamente una herramienta inferior. –

+0

Secundado. Mi recomendación es MbUnit. –

+0

Ese no era realmente mi punto con MS Test, hay mucha cirugía agradable que TFS le brinda cuando se combina con MS Test. –

4

Para una biblioteca de objetos falsos, he encontrado que la licencia de BSD Rhino.Mocks es bastante agradable.

3

NUnit está disponible en http://www.nunit.org Yo sugeriría esto incluso cuando se trabaja en el MS pila - el apoyo a los marcos no-MS está sucediendo en las vistas previas de MVC, que muestra un claro movimiento en la dirección correcta para permitir que todos los para personalizar nuestras pilas para que quepan

4

He tenido un gran éxito usando NUnit también.

También he usado NMock cuando surgió la necesidad de objetos falsos. Como una ventaja adicional, la fábrica para crear tus objetos falsos se llama Mockery.

Para facilitar el funcionamiento de las pruebas unitarias, he usado TestDriven.NET para ejecutar las pruebas unitarias como codifiqué. Además, he usado Cruise Control .NET para ver SVN y verifico que cada confirmación nueva compila y pasa todas las pruebas unitarias.

+0

El uso excesivo de cadenas mágicas de NMock lo convierte en una opción deficiente para un marco de burla. RhinoMocks o Moq son mejores opciones porque se basan en la escritura fuerte. –

3

El uso de nUnit con TFS no es demasiado difícil. Incluso hay un proyecto en Codeplex para implementar esto: NUnit for Team Build que incluso "publica" los resultados en el almacén.

No lo he probado, pero aconsejaría a los clientes que tienen una gran inversión (o que tienen una fuerte preferencia sobre la herramienta MSTest) en nUnit que estén interesados ​​en implementar TFS para continuar con nUnit en lugar de tratando de convertir todas sus pruebas existentes.

9

NUnit and Rhino suit well y auto-mocking container pueden ser de su interés.

Si también está buscando en BDD, entonces NBehave es probablemente una buena opción. Sin embargo, si solo quiere decir el estilo de BDD que se relaciona con las pruebas unitarias (xSpec) aunque puede salirse con la suya agregando un marco (aunque cosas como specunit agreguen algo de azúcar sintáctica), pero es posible que desee mirar MSpec también es interesante.

3

Voy a tener que dar un grito para Moq. Es un marco burlón de luz limpia que te ayuda a guiarte al abismo del éxito.

Las herramientas de prueba integradas en TFS están bien, harán el trabajo, pero a menudo pueden ser un poco engorrosas para trabajar. Los informes generados, la cobertura del código y algunas otras porciones son particularmente malas, te hacen calvo a los 22 en lugar de a los 50.

Si realmente te encantan las pruebas, considera probar alguna integración continua. Sentirá el dolor de la regresión rápidamente y potencialmente lo ayudará a llegar al objetivo final más rápido.

Independientemente de lo que haga, pruebe algunos y vea cuál es el más natural, si tiene tiempo. Buena suerte y feliz codificación.

+0

El problema con Moq es que requiere .NET 3.5 porque usa expresiones lambda y árboles de expresiones. –

+0

No necesariamente es algo horrible, pero tienes razón, esto retrasaría una tienda v2.0. – smaclell

4

Esto es probablemente un resumen de lo que ya se ha dicho, pero para TDD personalmente uso Rhino Mocks y MBUnit. Rhino Mocks es un marco de burla gratuito y de código abierto. La ventaja de Rhino Mocks es que no necesitamos usar cadenas mágicas para establecer sus expectativas como lo hace en NMock.

Me gusta MBUnit porque MbUnit tiene el concepto de RowTests que le permite variar sus entradas a su método de prueba. MBUnit también está disponible gratuitamente.

También debe asegurarse de que el CI (Servidor de integración continua) admita lo que elija para su marco de prueba de unidades. Nunit es compatible de forma predeterminada en Cruise Control.NET y debe hacer un poco de trabajo adicional para que MBUnit funcione en ccnet.

Desde el punto de vista IDE, debe tener TestDriven.NET. TestDriven.NET le permite hacer clic derecho y ejecutar pruebas en el IDE y es compatible con MBUnit y Nunit y otros.

NBehave es la biblioteca de BDD que he usado. No he utilizado ninguno, así que no pude compararlos y compararlos contigo, pero NBehave es compatible con Gallio del equipo de MBUnit, lo que significa que puedes ejecutar tus pruebas BDD tal como lo harías con TestDriven.NET.

También recomendaría Resharper. Encontrará que su productividad aumenta significativamente con esta herramienta de refactorización y orientación. Le ayudará a cambiar su código a medida que desarrolla sus pruebas.

Esperanza esto ayuda

2

recomiendo lo siguiente:

TestDriven.NET - Unidad de Pruebas de añadir a VS que está totalmente integrada con todos los principales marcos de pruebas unitarias NUnit, incluyendo MbUnit etc ...

Typemock aislador - Un marco de burla para .Net Unit Testing

NUnit - Un marco de prueba de unidad de fuente abierta que está en C#.

2

Para mi proyecto, he utilizado NUnit y TestDriven.NET con gran éxito. Puede crear una biblioteca separada solo para alojar su código de prueba o puede colocarlo en su ejecutable o biblioteca. Todo depende si quieres que tu código de producción se entrelaza con tu código de prueba.

Para Dependency Injection, uso NInject en mi proyecto actual y su excelente trabajo. Si usa la inyección de Constructor, no necesita saturar su código con el atributo [Inyectar].

No he utilizado una biblioteca de simulacro para mi proyecto .NET 2.0, pero para otro proyecto .NET 3.5 Voy a utilizar Moq

Tenga en cuenta que todo esto funciona con .NET 2.0 y superior. (excepto Moq)

Cuestiones relacionadas