2012-02-23 16 views
8

Actualmente estoy tratando de integrar Spring en mis pruebas de Cucumber. Tengo un encargo SpringFactory como se indica en:Cómo integrar Spring into Cucumber

http://www.zsoltfabok.com/blog/2012/01/cucumber-jvm-di/

pero el código no se está llamando. ¿Cuál es la mejor manera de "conectar" la fábrica con mis pruebas?

[Clarificación del comentario en la respuesta eliminada: el problema principal es que mi prueba tiene a Cucumber como corredor principal, es decir, @RunWith (Cucumber.class) por lo que no puedo usar SpringJUnit4ClassRunner aquí. Esto se describe en el enlace de arriba, pero no hay una descripción de cómo se lee cucumber.xml. He añadido un nuevo SpringFactory pero isnt leer el archivo XML ....]

Actualización: En realidad tengo un poco más añadiendo: las variables

<dependency> 
     <groupId>info.cukes</groupId> 
     <artifactId>cucumber-spring</artifactId> 
     <version>1.0.0.RC15</version> 
    </dependency> 

Sin embargo, he @Autowired que no son siendo inyectado ya que la prueba es realizada por Pepino.

¿Alguien más ha tenido este problema?

Respuesta

5

Una búsqueda rápida en Google de "integración de primavera de pepino" me trae here y here. Si está usando cuke4duke, esto parece una forma mucho más sencilla de hacerlo.

El ejemplo parece indicar que, de forma predeterminada, cuke4duke cargará cucumber.xml desde la base de su classpath. Este es un archivo de configuración de Spring que debe incluir un component-scan para las clases anotadas con @StepDefinition.

No necesitará proporcionar un SpringFactory, no necesitará usar la anotación @RunWith, solo proporcione alguna configuración Spring y una o más propiedades jvm.

+0

¡Funciona! Aquí hay algunos puntos adicionales que hicieron que mi solución funcionara: 1. No use la dependencia de picocontainer maven 2. Use la más actualizada @StepDefAnnotation en la clase Steps para su componente-scan. – Reimeus

1

Acabo de ver su pregunta. Lo más probable es que la dependencia del módulo cucumber-spring haya desaparecido. He actualizado el repositorio y ahora todas las dependencias deberían estar bien (estoy usando ivy).

9

Actualización: El proyecto cuke4duke ahora está obsoleto y ha sido reemplazado por Cucumber-JVM.

También tuve el mismo problema y la causa raíz fue que el SpringFactory no estaba leyendo pepino.xml en cucumber-spring-1.1.5.jar. El resorte DI falló silenciosamente y dio como resultado NPEs. Desde submission 448, Cucumber SpringFactory ya no carga pepino.xml y debe incluir @ContextConfiguration("classpath*:cucumber.xml") en TODAS sus clases de definición de paso.

-1

El problema es que ciertas versiones de Spring solo funcionan con ciertas versiones de Cucumber-Spring y Cucumber-JVM. Encontrar la combinación ganadora puede llevar dos días jugando con versiones jar. Así que comienza con un escenario BDD "Hello World" que usa una inyección simple que sabes que funcionará, porque tendrás que ajustar esos frascos hasta que obtengas un entorno que funcione.

La manera más fácil es hacer coincidir la última versión de Spring con la última versión de Cucumber-Spring. Las nuevas versiones de Spring son mejor compatibles. Si no puede simplemente actualizar su fuente, utilice sitios web que describan las dependencias de maven entre diferentes versiones de Cucumber-Spring y la versión de Spring con la que está trabajando.

Si quiere seguir con su versión heredada de Spring (mala idea, el dolor de cambiar solo empeorará) otra estrategia es usar JBehave para las pruebas de BDD.