2012-01-11 9 views
7

Estoy intentando crear y ejecutar un JUnitStory simple para ejecutar un archivo .story.JBehave: todos los pasos marcados pendientes?

tengo esto:

class Scenario1 extends JUnitStory { 
    @Delegate MySteps steps = new MySteps() 

    @Override 
    public Configuration configuration() { 
     return new MostUsefulConfiguration() 
       .useStoryLoader(new LoadFromRelativeFile(new File('src/test/groovy').toURL())) 
       .useStoryReporterBuilder(
       new StoryReporterBuilder() 
         .withDefaultFormats() 
         .withFormats(Format.HTML, Format.CONSOLE, Format.TXT) 

     ); 
    } 

    @Override 
    public List candidateSteps() { 
     final candidateSteps = new InstanceStepsFactory(configuration(), this).createCandidateSteps() 
     return candidateSteps; 
    } 
} 

Con o sin el delegado (copiar y pegar en todos los métodos anotados de MySteps), cada vez que corro JBehave, me sale el siguiente resultado:

somePattern(){ 
    // PENDING 
} 

Es como si las historias individuales no retomaran los pasos.

Cuando creo una clase "Historias" y extraigo todos los archivos de historia con storyPaths, se definen los pasos individuales. Utilizando un depurador, veo que los candidatos Pasos están siendo golpeados, pero no está extrayendo los datos que necesita.

¿Qué podría estar pasando aquí?

+0

Simplemente comprobando, pero ¿MySteps importa org.jbehave.core.annotations. *? –

Respuesta

-5

JBehave es una tecnología antigua y subdesarrollada. No lo uses

+0

por favor explique por qué piensa eso? – endless

0

No debería necesitar usar @Delegate - su JUnitStory no es su clase de Pasos. ¿Puedes intentar pasar en los pasos donde tienes esto?

Cuando pasa una clase que ha sido manipulada con bytecode para las clases Steps, es posible que JBehave ya no vea las anotaciones jbehave.

2

No necesita delegar en los Pasos. Y tampoco debe anular candidatosPasos, sino pasosFábrica. En versiones posteriores de JBehave, candidateSteps está en desuso, para hacer que la preferencia por el método de fábrica más prominente (http://jbehave.org/reference/stable/javadoc/core/org/jbehave/core/ConfigurableEmbedder.html#candidateSteps())

Ver este blog, donde expliqué cómo funciona la configuración básica JBehave con más detalle:

http://blog.codecentric.de/en/2012/06/jbehave-configuration-tutorial/

Andreas

1

Aquí está su compañero de respuesta: El paquete de formato ha cambiado.

Este es el obsoleto import static org.jbehave.core.reporters.StoryReporterBuilder.Format.HTML;

Este es el nuevo :) import static org.jbehave.core.reporters.Format.HTML;

tomó un tiempo para encontrar la respuesta, pero estaba oculto en la documentación jbehave

espero que ayude! ¡Salud!

Cuestiones relacionadas