tutorial que net rspec tdd cucumber bdd specflow

rspec - net - specflow que es



Cuke4Nuke o SpecFlow? (6)

Estoy tratando de decidir si debo usar Cuke4Nuke o SpecFlow. ¿Cuáles son los pro / contra de cada uno? Opiniones sobre cuál es mejor y por qué.

¡Gracias!


(Podría ser parcial porque estoy involucrado con SpecFlow, pero aquí mis pensamientos ...)

Cuke4Nuke está muy cerca de Cucumber. Esto promete muchas ventajas:

  • Compatibilidad
  • Obteniendo nuevas características de Cucumber cuando Cucumber evoluciona (al menos en teoría, pero el soporte de idiomas es un ejemplo para esto)
  • Ser una parte real de la comunidad de Pepino y el ecosistema de pepino

Sin embargo, esto también tiene algunas desventajas potenciales:

  • Ruby es una necesidad
  • Dado que se necesita más infraestructura (Ruby, Wire-Protocol, integración de línea de comandos ...), la complejidad de toda la solución aumenta y las posibilidades de que algo en la cadena falle se eleven.
  • La depuración es posible, pero un poco molesta
  • Ejecutar escenarios en la línea de comando de dos es simplemente feo, y todavía tengo problemas con algunos personajes (alemán Umlaute). Las soluciones de Cucumber no funcionaron para cuke4nuke en mi caso.
  • La integración con tu construcción continua es algo que tienes que resolver por ti mismo

SpecFlow es un proyecto separado de Cucumber. Intenta estar lo más cerca posible de Pepino, pero hay y habrá brechas. Hay planes para utilizar el mismo analizador sintáctico que Cucumber, para mejorar la compatibilidad en el nivel de idioma.

SpecFlow intenta ofrecer las siguientes ventajas:

  • Una solución .NET pura (por lo que no es necesaria la instalación de Ruby y Ruby no está involucrado en el tiempo de ejecución)
  • Hay una integración básica con VisualStudio (y hay planes para evolucionar esto)
  • Los escenarios son básicamente UnitTests y pueden ejecutarse con su infraestructura existente (NUnit.Runners, ReSharper, VisualStudio MSTest Integration ...)
  • Los escenarios y pasos se pueden depurar fácilmente desde VisualStudio (simplemente configure un punto de interrupción)
  • La integración en su construcción continua debería ser sencilla, ya que la infraestructura para ejecutar las pruebas unitarias ya está allí.

Como desventajas de SpecFlow veo actualmente:

  • No admite tantos idiomas como pepino
  • Actualmente hay un paso de "generación de código" involucrado. Esto es transparente cuando se usa VisualStudio, y hay una línea de comandos para hacer esto sin VisualStudio, pero a mucha gente no le gusta la generación de código.
  • Actualmente no hay un corredor de línea de comandos explícito para SpecFlow. Sin embargo, puede usar su corredor de línea de comandos de prueba de unidad.
  • SpecFlow depende de un marco de prueba de unidad, y actualmente solo es compatible con NUnit y MSTest
  • Los informes en SpecFlow aún no son muy sofisticados. Cucumber ofrece más opciones, sin embargo, no sé si están disponibles en cuke4nuke ...

Empecé con Cuke4Nuke, pero desde entonces he desertado a SpecFlow (lo siento Richard ;-)

Las principales razones para hacer esa transición fueron:

  • SpecFlow tiene una agradable integración VS2010 para resaltar la sintaxis de las características. Hay un proyecto Cuke4VS que ofrece similar pero no tiene soporte para VS2010 (o no cuando estuve por última vez, que era bastante reciente)
  • Encontré las pruebas de depuración en SpecFlow para ser más fácil (no me pidas que lo elabore, parecía que sí ... ;-)
  • Cuke4Nuke necesitaba a Ruby. Estaba bien con eso, pero la mayoría de los desarrolladores de C # que conozco se asustan por cualquier producto que no sea de MS, Ruby en particular.

Hay algunos problemas con Specflow / cosas que me gustan más en el mundo de Cucumber / Cuke4Nuke:

  • La documentación de Specflow es bastante ''ligera'': deberá estar preparado para trabajar arduamente para recopilar información de las fuentes de Cucumber e intuir un poco cómo se aplican a Specflow. Eso me dijo a mí mismo y a algunos otros que tienen el propósito de reforzar la documentación para que pueda mejorar en los próximos meses.
  • Prefiero la experiencia de ejecutar las pruebas de Cucumber / Cuke4Nuke en la línea de comandos con su salida de los escenarios codificados por colores según el estado (sé que alguien de arriba lo ve como negativo, así que supongo que depende de si eres un tipo de línea de comando chico...)
  • La comunidad de Cucumber es más grande y parece que hay más actividad que (posiblemente) se traduce a más personas para ayudarlo.

En general, ambos tienen el potencial de mejorar la forma en que escribimos el software.


Entiendo por Richard que tiene la intención de descontinuar Cuke4Nuke y está apoyando el traslado de algunas de las características de Cuk4Nuke a SpecFlow. Entonces la respuesta clara ahora es SpecFlow.


Otra opinión muy sesgada: prueba StoryQ :)

Las pruebas de StoryQ son en realidad código, por lo que se obtiene un soporte de refactorización / IDE mucho mejor, y se integra en el corredor de prueba de la unidad existente, por lo que CI es muy fácil.

Probablemente sea una cuestión de preferencia si prefieres comprobar las características de texto sin formato o el código compilable. Pero para nosotros, descubrimos que fue realmente agradable cambiar el nombre de los métodos narrativos y actualizar todas las historias por sí mismos.

En realidad, se proporciona una GUI que convertirá los escenarios de texto plano en código StoryQ para usted, si ya ha invertido en escenarios de texto sin formato o si desea entregar el teclado a su gente de negocios. ¡Incluso tiene una forma simple de intellisense!

Pruébalo si quieres un punto de entrada ultraligero en BDD :)


Otra respuesta sesgada: StorEvil se come todas las demás herramientas .NET BDD.

Ventajas : StorEvil tiene su propio corredor de línea de comandos, tiene buenos informes (usando el motor Spark view) y tiene el mejor motor de traducción y ejecución de texto sin formato-> C #.

Además, tiene 100% más de mal que cualquier otra solución.

Desventajas : StorEvil no es totalmente compatible con otros idiomas humanos (excepto inglés). La integración de StorEvil en Visual Studio aún no es tan buena como las otras herramientas. StorEvil beberá toda la cerveza en la nevera si no la vigilas.


jbandi da un buen resumen. Respondo la pregunta de la misma manera (con el descargo de responsabilidad contrario, por supuesto).

El objetivo de Cuke4Nuke es la compatibilidad completa de pepino en .NET mientras se duplica el código de pepino más pequeño posible. Por lo tanto, algunas de las concesiones que resaltó, por ejemplo, la dependencia de Ruby, son inherentes a la herramienta. Otros, como los errores en el lenguaje y la compatibilidad con el formateador y la compatibilidad limitada con la depuración, son problemas temporales y desaparecerán con versiones futuras.

Me he encontrado con algunos problemas donde Cuke4Nuke no funciona como Cucumber. Pero como trabajo principalmente en inglés, no veo los problemas relacionados con el lenguaje en mi trabajo habitual. Me agradaría seguir los pasos para reproducir cualquiera de estos problemas para poder solucionarlos. (Por favor, publíqueles la lista de problemas de Cuke4Nuke , no aquí).