unit tutorial testserver test net asp c# asp.net .net frameworks bdd

c# - tutorial - ¿Qué Herramientas/Frameworks de Desarrollo Dirigido por Comportamiento(BDD) están disponibles para Microsoft Stack?



unit test controller c# (7)

Estoy interesado en el Desarrollo Dirigido por Comportamiento (BDD)

¿Hay buenos marcos y / o herramientas disponibles para la plataforma .Net (preferiblemente C # y ASP.Net)?

¿Y cuándo ha sido más apropiado utilizar BDD en escenarios del mundo real? (pregunta auxiliar)


+1 para la recomendación de las personas de SpecFlow para los escenarios; nunca lo usé, pero escuché muchas cosas buenas al respecto. He estado usando el viejo NUnit simple con un pequeño DSL como this . MSTest funcionaría de manera similar.

También puede hacer BDD en el espacio de la unidad, que es lo que MSpec está diseñado para hacer. Personalmente estoy odiando MSpec, pero el resto del equipo aquí lo ama. Les gusta escribir ejemplos de cómo funciona el código. Me gusta mostrar por qué el comportamiento es valioso. Es una distinción sutil y si no te preocupa hacer esto a nivel de unidad, no te golpeará.

Otros marcos a considerar incluyen Concordion, Fitnesse.NET (¡por favor ponga FitSharp detrás de esto!) Y TickSpec.

En el mundo real, el bit más valioso de BDD por mucho tiempo son las conversaciones , no las pruebas automatizadas. Aquí hay un par de sugerencias rápidas y consejos para hacerlo funcionar:

  • No escriba pruebas automatizadas sobre cosas que están en flujo. Simplemente te compromete con cosas que obtuviste mal. Espere hasta que la interfaz de usuario se haya asentado un poco y luego hágalo.

  • Si no le importa mucho su interfaz de usuario, pero le importa la integridad de los datos, escriba los escenarios sobre la capa de controlador / presentador (por ejemplo, para las pantallas de administración).

  • No comience con el inicio de sesión. Comience describiendo una parte valiosa de la aplicación para la que puede iniciar sesión. Haga eso primero (suponiendo que solo tiene un usuario). Obtendrá comentarios más rápidos sobre los bits arriesgados.

  • Busque comentarios rápidos sobre los bits arriesgados, que generalmente serán los bits que nunca ha hecho antes. Usa escenarios para tener conversaciones a su alrededor. Escribe cualquier cosa interesante que descubras, pero olvida los escenarios que son obvios, ¡son obvios! No se preocupe por automatizarlos para empezar. Tener conversaciones es más importante que escribir conversaciones es más importante que automatizar las conversaciones.

¡Buena suerte! Si quiere saber más acerca de BDD, preparo una página de enlaces relevantes here .



Hay una gran herramienta, llamada SpecFlow . SpecFlow está inspirado en Cucumber, el conocido framework BDD para Ruby on Rails. Y tiene una gran cantidad de ventajas.

Definitivamente deberías echarle un vistazo.


Spec4Net ( https://bitbucket.org/fthomsen/spec4net/ ) es un buen marco también. Lo usamos ampliamente en el trabajo. La curva de aprendizaje es casi inexistente y el flujo natural parece intuitivo.


También MSpec es un buen marco.

Lo uso en la pila de Microsoft que mencionas (C #, ASP.Net y MVC) y me gusta su sintaxis.

BDD te ayuda a pensar de forma orientada a los negocios / características, no solo de forma codificada. Entonces, estás más centrado en el valor del negocio.

También ayuda en la prueba de aceptación del usuario para crear una confianza entre usted y el cliente.


Un marco BDD interesante es Concordion.NET . Es un marco de BDD de código abierto para la pila de Microsoft que usa NUnit para ejecutar las pruebas de Concordion.NET: https://github.com/concordion/concordion-net Como las especificaciones de Concordion están escritas en HTML simple, proporciona una buena base para un sistema de documentación viviente. Puede usar un editor WYSIWYG (WYSIWYG) como lo que usted ve, para describir el comportamiento previsto de su software en documentos HTML sencillos e instrumentarlos para verificar su sistema bajo prueba. De acuerdo con la excelente clasificación de las herramientas BDD , Concordion.NET se enfoca en la entrada legible para negocios (y también alcanza la salida legible para el negocio). Se mueve incluso más allá de BDD y es compatible con ATDD: http://assertselenium.com/2012/11/05/difference-between-tdd-bdd-atdd/


LightBDD es un marco de código abierto que permite escribir pruebas de BDD que son fáciles de leer pero también fáciles de mantener y ampliar cuando el proyecto crece.

Las principales características que ofrece son:

  • escenarios fáciles de leer,
  • fácil mantenimiento de pruebas,
  • integración con marcos de prueba bien conocidos ( NUnit / MbUnit / MsTest / xUnit ),
  • escenario pasos ejecución seguimiento y medición de tiempo de ejecución,
  • generación de informes de resumen de ejecución de prueba en HTML ( un informe de ejemplo ), XML y formato de texto sin formato.

Se basa en pruebas escritas puramente en código, lo que significa soporte nativo para refactorización, análisis de código, ejecución de prueba y todas las demás características que Visual Studio / Intellisense / Resharper ofrece.

Una prueba de ejemplo escrita en este marco se ve de la siguiente manera:

[TestFixture] [FeatureDescription( @"In order to access personal data As an user I want to login into system")] //feature description [Label("Story-1")] public partial class Login_feature //feature name { [Test] [Label("Ticket-1")] public void Successful_login() //scenario name { Runner.RunScenario( Given_user_is_about_to_login, //steps Given_user_entered_valid_login, Given_user_entered_valid_password, When_user_clicked_login_button, Then_login_is_successful, Then_welcome_message_is_returned_containing_user_name); } }

Se puede encontrar más información sobre el marco en la página wiki del LightBDD y en la LightBDD .