2009-12-25 17 views
7

Acabo de enterarme de BDD cuando veo un video de Scott Guthrie in Sweden. Uno de los oyentes le hizo una pregunta a Scott sobre cómo VS2010 y ASP.NET MVC hacen para respaldar BDD.¿Cuál es el mejor marco BDD para trabajar con ASP.NET MVC 2 + C# 4?

Después de eso, busco aproximadamente BDD (Behavior Driven Development) que se centren en las especificaciones más que en las pruebas unitarias cuando se compara con TDD (Test Driven Development). Encontré un framework que funciona con Ruby y Java. Pero no tengo ningún framework famoso para .NET.

Por favor sugiérame acerca de BDD framework y resumen PROs/CONs de él.

PS. BDD marco sugerido debe trabajar muy bien en .NET 4, C# 4.0 y ASP.NET MVC 2.

Gracias,

Respuesta

13

Veo que esta pregunta ya tiene una respuesta y no he probado NBehave. Pero, estamos usando MSpec (Machine.Specifications) para este proyecto empresarial bastante grande y está funcionando bastante bien para nosotros aquí. Muy vale la pena mencionar.

Rob Connery hizo un vídeo excelente sobre el aprendizaje de BDD, donde utiliza MSpec, línea por línea: (enlace eliminado, ya no está disponible, pero la buscan)

Más sobre MSpec de Rob Connery, y por qué él lo usa.
http://wekeroad.com/2009/09/21/make-bdd-your-bff-2/ Es posible que también quiera echar un vistazo a sus otras publicaciones etiquetadas BDD.

Pros:

  • permite rápidamente "tropezar" de toda su historia, SCENERIOS, contextos y Especificaciones - sin ningún tipo de código real. Vamos a enfocarte en los "Comportamientos" generales, que es el propósito de BDD !, sin preocuparte por el código y hacerlo compilar.
  • Produce un EXCELENTE informe HTML, con "< - NO IMPLEMENTADO" junto a las especificaciones resumidas. A menudo entrego este informe a: El cliente (CEO y CTO), los probadores, los nuevos recursos que traigo al proyecto y cualquier otra persona que quiera saber cómo funciona el software, ¡sin tener que mostrar una línea de código!
  • Los corredores TestDriven.NET se incluyen con MSpec utilizando el nuevo enlace tdnet (¡sin configuración!).
  • El atributo [Comportamientos], junto con su tipo de delegado Behaves_like, hace que copiar las especificaciones existentes de un escenario a otro otro scenerio sea instantáneo.

Contras:

  • Poca o ninguna documentación, a pesar de que no se necesita mucho (ver los vídeos más arriba). El autor blogueó recientemente para obtener ayuda con la documentación.
  • Todavía nuevo, y solo un proyecto paralelo del autor (no su actuación principal). Pero, es muy activo a partir de este post.

Espero que ayude.

+0

También debería agregar que con MSpec 0.3, ahora hay un corredor de prueba ReSharper. – eduncan911

+0

Gracias por compartir mucha información sobre el marco BDD. –

1

¿Has mirado en NBehave? También es probable que desee mirar this old question. Pero también me gustaría añadir que, en mi humilde opinión, es posible hacer BDD utilizando cualquier tipo de marco de prueba de unidades. Una forma simple y directa es nombrar a su "clase de prueba" algo así como "Given_X" y luego dejar que todos sus "métodos de prueba" tengan nombres como "It_should_Y".

+0

1 estado haciendo BDD durante bastante tiempo sin un marco. – jamesaharvey

+0

@james le puede gustar http://storyq.codeplex.com ya que es un marco muy pequeño que básicamente le proporciona informes de estilo BDD de sus pruebas de unidades normales. –

6

Creé StoryQ después de decidir que no necesitabas mucho framework. Es muy liviano, se inserta en tu corredor de prueba existente, compruébalo en http://storyq.codeplex.com

+0

Siempre es bueno ver a alguien crear su propio marco de BDD. +1 Un comentario de OT: en su ejemplo en la página de inicio de StoryQ, muestra clases incrustadas. Las Pruebas UNit de ReSharper (a partir de 4.5) no admiten clases integradas. Será mejor que elimines el contenedor de la clase DemoTest y, en su lugar, uses espacios de nombres más refinados. – eduncan911

+0

@ eduncan911 sí, otro más;). Oye, no estoy seguro de que te refieras a "clase incrustada", la jerarquía es: espacio de nombres StoryQ.Demo/clase DemoTest/method PassingExample ... –

+0

Doh, tienes razón. Sin incrustaciones allí. :) Lo siento, tarde ocupada. – eduncan911

8

Recomendaría intentarlo SpecFlow Es extraño que nadie lo haya mencionado. Hay un gran artículo aquí sobre using BDD with Specflow and Asp.Net MVC Es open source and is hosted on GitHub

El flujo de especificación utiliza la sintaxis GWT (Given When Then) que personalmente me gusta. Hasta ahora, hemos tenido un gran éxito con BDD que ahora intentamos implementar utilizando SpecFlow. Todavía es temprano pero hasta ahora todo va bien.

Pros:

  1. Se integra a VS2008 & VS2010 con un buen complemento
  2. usos populares dado cuando Luego vocabulario
  3. Usos NUnit Test estándar Runner archivo Característica
  4. le permite simplemente pegar en los escenarios de Analistas de negocios

Contras:

  1. el código de característica atrás es un poco feo, aunque no hay nada malo
  2. Por lo que yo sé, el formato de presentación es bastante limitado (sólo tiene que utilizar NUnit)

os animo a darle una oportunidad.

Cuestiones relacionadas