Falha no AfterStories ao executar estorias do JBehave


jbehave-logo

Passei por um problema recentemente onde ao falhar um Teste de aceitação BDD escrito em JBehave, todos os testes seguintes falhavam ao executar o método AfterStorie.  Vou deixar registrado aqui a solução encontrada, uma vez que não encontrei registro de outras pessoas que conseguiram solucionar o problema.

A  seguinte mensagem de Erro era exibida:


Generating reports view to 'E:\myproject\myapp\target\jbehave' using formats '[stats, console, html, junitscenarioreporter]' and view properties '{views=ftl/jbehave-views.ftl}'
Reports view generated with 3 stories (of which 0 pending) containing 23 scenarios (of which 0 pending)
java.lang.RuntimeException: org.jbehave.core.embedder.Embedder$RunningStoriesFailed: Failures in running stories: ReportsCount[stories=3,storiesNotAllowed=0,storiesPending=0,scenarios=23,scenariosFailed=7,scenariosNotAllowed=0,scenariosPending=0,stepsFailed=7]
at de.codecentric.jbehave.junit.monitoring.JUnitReportingRunner.run(JUnitReportingRunner.java:81)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: org.jbehave.core.embedder.Embedder$RunningStoriesFailed: Failures in running stories: ReportsCount[stories=3,storiesNotAllowed=0,storiesPending=0,scenarios=23,scenariosFailed=7,scenariosNotAllowed=0,scenariosPending=0,stepsFailed=7]
at org.jbehave.core.embedder.Embedder$ThrowingRunningStoriesFailed.handleFailures(Embedder.java:499)
at org.jbehave.core.embedder.Embedder.handleFailures(Embedder.java:265)
at org.jbehave.core.embedder.Embedder.generateReportsView(Embedder.java:252)
at org.jbehave.core.embedder.Embedder.generateReportsView(Embedder.java:233)
at org.jbehave.core.embedder.Embedder.runStoriesAsPaths(Embedder.java:212)
at de.codecentric.jbehave.junit.monitoring.JUnitReportingRunner.run(JUnitReportingRunner.java:79)
... 6 more

Identifiquei que os testes apenas voltam a funcionar quando era deletados os arquivos .stats da pasta target\jbehave. Estes arquivos são dados estatísticos sobre a execução de cada teste BDD e é gerado pelo JBehave apos sua execução. Por algum motivo desconhecido, quando um teste falhava a simples presença deste arquivo influenciava na execução do método AfterStorie para todos os outros testes.

Uma vez que eu não preciso desses arquivos de estatísticas , eu desabilitei sua geração da seguinte maneira:

StoryReporterBuilder storyReporter = new StoryReporterBuilder() {
/**
* The builder is configured to build with the
* StoryReporterBuilder.Format.STATS as default format. To change
* the default formats the user can override the method:
*/
@Override
public StoryReporterBuilder withDefaultFormats() {
return withFormats(org.jbehave.core.reporters.Format.CONSOLE);
}
};
storyReporter.withDefaultFormats().withViewResources(viewResources).withFormats(Format.HTML_TEMPLATE)
.withKeywords(keywords);

No trecho de código acima, eu deixo como relatório default a saída para o CONSOLE e adiciono o formato HTML como segunda opção.

Últimos 5 artigos de Eduardo Costa

Sobre Eduardo Costa

De Campinas-SP, bacharel em Sistema de Informação pela Anhanguera Educacional e pós graduado no curso de MBA em Gestão de Projetos e Metodologia do Ensino Superior. Atualmente trabalha como arquiteto e desenvolvedor Java em empresa de desenvolvimento de software de suporte a tomada de decisão, além de ministrar aulas de Orientação a Objeto, Linguagem Java e XML. Já atuou como líder técnico, coordenador de produto e analista de negócios.

Deixe uma resposta