tutorial serenity español java bdd

serenity - ¿Cuáles son las diferencias entre los frameworks BDD para Java?



serenity bdd (8)

¿Cuál es el mejor marco de BDD para usar con Java? ¿Por qué? ¿Cuáles son los pros y los contras de cada marco?

Aquí hay un enlace interesante sobre Concordion vs. Cucumber y Java Acceptance Testing

Encontré algunas aquí, pero no estoy seguro de cuál elegir.

Realmente, mira el mencionado arriba.

¿Tiene sentido utilizar un marco de BDD si ya uso una biblioteca de burla (por ejemplo, Mockito)?

Respuesta corta: sí, definitivamente. En realidad, las pruebas de aceptación usando un marco BDD y las pruebas unitarias en aislamiento usando objetos simulados son tan diferentes que realmente no entiendo la pregunta. La prueba de aceptación es la prueba de caja negra, las pruebas se utilizan para verificar que una característica comercial esté funcionando y que el analista de negocios las redacte idealmente. Las pruebas unitarias en aislamiento usando simulaciones son pruebas de caja blanca, las pruebas se usan para verificar que una unidad está funcionando y están escritas por desarrolladores. Ambos son útiles pero tienen propósitos totalmente diferentes. En otras palabras, usar Mockito no reemplaza un framework BDD en absoluto y el inverso también es cierto.

¿Cuáles son los pros y los contras de cada marco de Desarrollo impulsado por comportamiento (BDD) para Java?

He encontrado algunos de ellos here , por ejemplo.

¿Tiene sentido utilizar un marco de BDD si ya uso una biblioteca de burla (por ejemplo, Mockito )?


Acabo de terminar de comparar tres frameworks BDD para Java. Obviamente, mis hallazgos tienen una fecha de uso bastante corta.

Concordion

  • Muy flexible
  • Salida de informe muy bonita
  • Bonito marco de plugin
  • Mal documentado. Tuve que leer la fuente para descubrirlo (afortunadamente es de muy buena calidad).
  • Los dispositivos parecían terminar unidos al html.

EasyB

  • Curva de aprendizaje muy superficial (incluso para desarrolladores no Groovy)
  • Integración DBUnit extremadamente potente
  • Aparentemente no hay soporte para los parámetros (conduce a historias muy vagas o duplicación entre el texto y el código (edite: en realidad lo hay, pero la documentación estaba muy bien escondida).
  • La historia y el código están estrechamente relacionados (mismo archivo)
  • Salida de informe muy básica
  • No se pudo hacer que el complemento IntelliJ funcione
  • Comunidad inactiva (el complemento Maven parece haberse roto durante tres meses, no hay muchos ejemplos de código para dibujar)

JBehave

  • Extremadamente potente y flexible (por ejemplo, reducción de la placa de la caldera mediante la composición de historias como requisitos previos)
  • Documentación extensiva (si está fragmentada) y ejemplos
  • Soporte extenso (aunque abrumador) para diferentes marcos y entornos
  • Excelente separación de archivos de historias del código
  • Parece tener una comunidad bastante activa y muchos más ejemplos y discusiones sobre esto en la web.
  • Una curva de aprendizaje bastante empinada (me tomó 3-4 veces más tiempo descubrir que Concordion / EasyB)

No tuve la oportunidad de probar Cuke4Duke of JDave como me hubiera gustado, pero probablemente presionaré por JBehave en este momento.


Mi equipo ha estado usando JBehave por un tiempo. Utiliza archivos de texto sin formato para almacenar las especificaciones. Cada paso (Given, When, Then) se ejecuta mediante un método determinado que puede extraer parámetros del paso. Los escenarios pueden sangrarse y formatearse bien, lo que ayuda mucho si los clientes desean verificarlos.

También hay algunos problemas. Cambiamos a Java 6. A veces algunos pasos de escenario se ignoran durante la ejecución. Puede causar muchos problemas para descubrir dónde está el error.


Mi equipo ha utilizado JBehave con éxito: pasamos a él después de usar EasyB y encontramos que los archivos de escenarios de texto plano son más fáciles de tratar.


Originalmente hice mi BDD con jUnit simple, pero he estado viendo JDave últimamente porque es casi 1: 1 de lo que estaba haciendo con jUnit. También se ejecuta sobre jUnit, por lo que ya funciona en Eclipse y también es fácil de configurar para trabajar en sistemas de integración continua como Hudson. Realmente no puedo compararlo con otros pero mis experiencias con JDave han sido buenas hasta ahora.

¡Ah, y nunca es una idea estúpida usar burlas! No están vinculados a TDD / BDD específicamente, su propósito es aliviar la carga de las pruebas en general.


Probé Cucumber-JVM (anteriormente desarrollado como Cuke4Duke). Utiliza Gherkin DSL para la especificación, almacenado como texto sin formato.

Se puede ejecutar como prueba JUnit. Entonces, el único problema para comenzar a usar es hacer que las personas de negocios o el Gerente de Producto lean / escriban .features en Fuentes.

Resultados


Wow, veo que el tema está caliente, muchas buenas respuestas ...

Dejando de lado la ironía, recientemente descubrí BDD y encontré el concepto interesante. Oye, obliga a escribir ambas pruebas ... ¡y especificaciones! Por sorprendente que pueda parecer, este último también puede faltar en algunos proyectos ... O simplemente carecer de la precisión que BDD obliga a introducir.

El artículo de Behavior Driven Development resume el concepto y los enlaces a algunos buenos artículos (como el escrito por Andrew Glover). Además, para el tema de este hilo, ofrece una lista bastante completa (supongo) de marcos BDD, un buen número de ellos para Java.
No resuelve el problema de elegir el marco, pero al menos facilitará la búsqueda ...

Dado que BDD se basa en gran medida en la legibilidad del código de prueba, supongo que un buen criterio de elección es mirar los tours / tutoriales rápidos y ver cuál parece más apropiado para su estilo. Otros criterios podrían ser las herramientas de apalancamiento de marcos con las que está familiarizado (prueba unitaria, burla), uso con IDE, etc.


"pros y contras" pueden ser cosas diferentes para diferentes personas. Por lo general, echo un vistazo a

  • actividad de desarrollo , por ejemplo, son versiones nuevas o la última versión tiene 2 años.
  • madurez , por ejemplo, ¿cuánto tiempo ha pasado? ¿hay tutoriales e incluso libros disponibles? (No leo estos libros, es solo un signo de adopción).
  • soporte de herramientas , por ejemplo, hay un plugin de Eclipse, soporte de Ant, etc.
  • tamaño de las dependencias , no me gustan los marcos que vienen con todo lo suyo. por ejemplo, quiero elegir mi marco de burla yo mismo.
  • tipo de licencia , esto es importante para mí debido a los términos legales en la empresa para la que trabajo.
  • compatibilidad con herramientas relacionadas , por ejemplo, usa lenguaje Gherkin o no.

Y desde algunos frameworks eché un vistazo a

  • Instinct malo : última actividad Mar 2010, bueno : licencia ASF
  • JDave mal : viene con matchers y burlas, bueno : última actividad de enero de 2011, licencia ASF
  • EasyB bad : última actividad Oct 2010, no estoy seguro : usa Groovy. Esto podría estar bien, pero sería un problema para la adopción en mi caso.
  • beanspec malo : solo una versión en 2007, esto está muerto
  • bdoc bad : última actividad de enero de 2010, no estoy seguro : parece que va por el otro lado, creando un informe del código.
  • spock bad : tal vez un poco extremo, este es un marco de prueba completo, no solo BDD, bueno : muy activo, muy bueno.
  • JBehave , la "madre" de todo BDD en Java, mala : muy poderosa = licencia compleja, incompatible (para mí), viene con casi todas las librerías de prueba y mucho más, bien : basado en RSpec y por lo tanto compatible, plugins eclipse, integración maven , comunidad muy activa

En cuanto a los simulacros: Definitivamente también necesitas un marco burlón. Los marcos de BDD solo lo ayudan a escribir las especificaciones, pero algunas pruebas necesitarán simulaciones o resúmenes, especialmente. cuando diseña de arriba hacia abajo (desde la vista general hasta los detalles).