Closed otmarjr closed 7 years ago
@ttperes, você pode nos dar uma ajuda nesta questão?
Bom dia!
Se legacyRunner = true Histórias - context.addStories(); Histórias de reuso - context.addStoriesReuse(); Passos personalizados - context.addSteps(). Se você está usando assim, não está usando o método novo.
Se legacyRunner = false Global - context.addStepsGlobal(), context.addStoriesGlobal(), context.addStoriesReuseGlobal(); Classes - context.addStepsClass(), context.addStoriesClass(), context.addStoriesReuseClass(); Método - context.addStepsMethod(), context.addStoriesMethod(), context.addStoriesReuseMethod().
Os métodos são diferentes propositalmente.
No caso de usar os métodos de um no padrão do outro, o behave jogará uma exceção nem iniciando os testes.
Existe um bug na versão do padrão antigo que foi um dos motivadores para justamente criar o novo modelo.
Este erro, foi contornado por mim e pelo Julian de forma a não impactar os demais testes legados. Para contornar esse problema, você deve dar um clearAllstories() (no runner) antes de cada run().
Olá pessoal,
o legacyRunner não tem seu valor explicitado no "behave.properties". Ao definí-lo manualmente para 'true', vide comentário do @ttperes,
"Se legacyRunner = true Histórias - context.addStories(); Histórias de reuso - context.addStoriesReuse(); Passos personalizados - context.addSteps(). Se você está usando assim, não está usando o método novo."
continuo sem conseguir executar meus testes. Comecei a ter este problema assim que atulizei para a versão 1.5.2. Na verdade, ele executa o primeiro .story corretamente e lança uma exceção para cada um dos demais. Segue abaixo a saída no console:
_13:49:10,688 ERROR (main) [BehaveContext]: Erro não esperado ao executar o Demoiselle Behave
br.gov.frameworkdemoiselle.behave.exception.BehaveException: O arquivo de história [/home/
Vocês teriam alguma sugestão para contornar essa mudança de comportamento da versão 1.5.2?
Obrigado, Gabriel Silva
Por enquanto a recomendação é voltar para versão que funcionava corretamente pois iremos analisar esta situação assim que for possível.
Obrigado pela colaboração.
retomando o assunto vou ainda esta semana para corrigir o problema em uma 1.5.3-SNAPSHOT e gerar a versão 1.5.3 FINAL o mais breve possível.
O problema foi detectado no seguinte trecho de código que foi adicionado durante o desenvolvimento da versão 1.5.2, sendo que ele faz uma verificação de existência de cenários duplicados.
Ainda hoje será gerada uma versão 1.5.3-SNAPSHOT contendo a correção e para que funcione efetivamente será necessário informar a propriedade behave.parser.erroDuplicateScenarios
como false no arquivo behave.properties
.
@otmarjr, um detalhe importante que percebi em um dos comentário e acredito que seja pertinente citar.
o legacyRunner não tem seu valor explicitado no "behave.properties".
Os valores padrões das propriedades são explicitados via código Java no arquivo https://github.com/demoiselle/behave/blob/master/impl/core/src/main/java/br/gov/frameworkdemoiselle/behave/config/BehaveConfig.java e tentamos ao máximo deixar a documentação atualizada para corresponder com o código.
No exempo do legacyRunner a documentação esta:
behave.runner.legacyRunner : Habilita ou desabilita o modo de execução legado para retrocompatibilidade. O valor padrão é true.
e o Java esta:
// Ativa o uso da nova implementação que separa os .story por escopos ou mantém a maneira original sem escopos
public static boolean getRunner_legacyRunner() {
return Boolean.parseBoolean(getProperty("behave.runner.legacyRunner", "true"));
}
Senhores, for gerada uma versão 1.5.3-SNAPSHOT contendo a correção, favor testar.
Alterem o pom.xml para a versão citada e verifiquem se ao executar os testes a saída do console é igual ao texto a seguir:
INFO (main) [BehaveContext]: --------------------------------
INFO (main) [BehaveContext]: Demoiselle Behave Iniciado
INFO (main) [BehaveContext]: Demoiselle Behave 1.5.3-SNAPSHOT em: 02/01/2017 16:14
INFO (main) [BehaveContext]: --------------------------------
Para que funcione efetivamente será necessário informar a propriedade behave.parser.erroDuplicateScenarios como false no arquivo behave.properties
.
@gabrielsilgon e @otmarjr, algum retorno sobre a nova SNAPSHOT gerada com a correção do problema relatado?
Aguardo.
Acabei corrigindo com uma superclasse que limpa o context antes da execução de cada método de teste. Sigo na versão 1.5.2
@otmarjr, peço que faça o teste com a 1.5.3-SNAPSHOT e nos retorne o resultado para que possamos fechar esta issue, gerar a versão final com a correção e avisar o restante dos usuários.
Obrigado pela sua atenção e colaboração.
Executei um teste aqui e funcionou corretamente.
Pretendo gerar a versão 1.5.3 FINAL ainda neste mês de abril contendo a correção, por isso vou deixar esta issue aberta.
Olá!
Hoje temos uma larga base de código que utiliza os testes automatizados no padrão de adicionar histórias para reuso por método de teste em cada classe de teste separada.
Após tentar atualizar para a versão 1.5.2, apesar do behave.properties não possuir a propriedade legacyRunner definida como false, noto que a execução está com o novo padrão. Adiciono as histórias de reuso por método de teste, e as mesmas não estão sendo removidas ao final de cada método de teste, conforme descrito em http://demoiselle.sourceforge.net/docs/components/behave/reference/lastversion/html/behave-scope.html
Para cada método ocorre o erro: O arquivo de história [/home/07257618658/workspace-siefpar/SiefPar/01-Sistema/06-Teste/testeautomatizado/target/test-classes/stories/intranet/cadastrarModalidade/cenariosComuns.story] foi adicionado 2 vezes, favor verificar.