2012-01-11 15 views
7

Sto provando a creare ed eseguire una semplice JUnitStory per eseguire un file .story.JBehave - tutti i passaggi contrassegnati in sospeso?

ho questo:

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 senza il delegato (copia e incolla in tutti i metodi annotati di MySteps), qualora si esegue JBehave, ottengo il seguente output:

somePattern(){ 
    // PENDING 
} 

È come se le singole storie non prendessero i gradini.

Quando creo una classe "Storie" e inserisco tutti i file di storia con storyPaths, i singoli passaggi sono definiti. Usando un debugger, vedo che candidateSteps viene colpito, ma non sta tirando i dati di cui ha bisogno.

Cosa potrebbe succedere qui?

+0

Basta controllare, ma MySteps importa org.jbehave.core.annotations. *? –

risposta

-5

JBehave è una tecnologia vecchia e sottosviluppata. Non usarlo

+0

per favore spieghi perché la pensi così? – endless

0

Non è necessario utilizzare il @Delegate: la tua JUnitStory non è la tua classe Steps. Puoi provare a passare passaggi dove hai questo?

Quando si passa in una classe che è stata manipolata in bytecode per le classi Steps, JBehave potrebbe non visualizzare più le annotazioni jbehave.

2

Non è necessario delegare ai passaggi. Inoltre, non devi ignorare candidateSteps, ma piuttosto stepsFactory. Nelle versioni successive di JBehave, candidateSteps è deprecato, per fare che la preferenza per il metodo factory più prominente (http://jbehave.org/reference/stable/javadoc/core/org/jbehave/core/ConfigurableEmbedder.html#candidateSteps())

Vedere questo blog, in cui ho spiegato come funziona la configurazione di base JBehave più in dettaglio:

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

Andreas

1

Qui è la vostra risposta compagno: Il pacchetto di formato è cambiato.

Questo è il deprecato import static org.jbehave.core.reporters.StoryReporterBuilder.Format.HTML;

Questo è il nuovo :) import static org.jbehave.core.reporters.Format.HTML;

voluto un po 'per trovare la risposta, ma era nascosto sulla documentazione jbehave

Speranza che aiuta! Cheers!

Problemi correlati