demoiselle / behave

Demoiselle Behave
https://www.frameworkdemoiselle.gov.br/dbehave/
29 stars 53 forks source link

Bug - Maven BUILD FAILURE #63

Closed marvinsiq closed 11 years ago

marvinsiq commented 11 years ago

Pessoal, no BETA4 havia um bug que fazia com que o maven desse sucesso de execução mesmo com passos quebrados. O Bug foi corrigido mas acredito que agora existe outro. Meu projeto possui 5 classes de testes da qual 2 estão quebradas. Ao executar o mvn test (ou seja todos os testes serão executados), no final da execução o maven informou que os 5 testes estavam quebrados. Quando fui ver o Stacktrace de uma das classes que eu sei que passou, o erro informado era de outra classe. Não sei se fui claro na explicação, se precisar eu posto os logs.

botelhojp commented 11 years ago

Isso continua ocorrendo no BETA7 ? Se sim, manda o Stacktrace

botelhojp commented 11 years ago

Acredito que consegui reproduzir o problema. Não estávamos limpando o contexto do DBehave, dai a exceção ficava presa para todos os testes. O commit https://github.com/demoiselle/behave/commit/d35fcfd9bfb9db76e556603f0fce67a9d7014d4d resolve. Geramos uma snapshot, atualize seu projeto com a 1.2.0-SNAPSHOT Favor confirmar se o problema sumiu para fechamos a Issue

marvinsiq commented 11 years ago

Sim, isso está acontecendo no BETA 7 e o erro persiste mesmo após o seu commit (atualizei novamente para o SNAPSHOT inclusive limpei o repositório.)

O log abaixo é de um teste que passou mas que o maven aponta como erro. Repare que neste teste nem tem o passo que ele aponta que falhou (Então será exibido "Acesso Restrito") Este passo é de outro teste.

br.gov.mp.siconv.bdd.ConvenioTest.testConsultarConvenio
Referência cíclica entre cenários: [Então será exibido "⦅Acesso Restrito⦆"]. Verifique suas história para evitar referências cíclicas.
Stacktrace
java.lang.AssertionError: Referência cíclica entre cenários: [Então será exibido "⦅Acesso Restrito⦆"]. Verifique suas história para evitar referências cíclicas.
    at org.junit.Assert.fail(Assert.java:91)
    at br.gov.frameworkdemoiselle.behave.controller.BehaveContext.run(BehaveContext.java:126)
    at br.gov.mp.siconv.bdd.ConvenioTest.testConsultarConvenio(ConvenioTest.java:25)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
    at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
    at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
    at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
    at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345)
    at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009)
Saída Padrão
(BeforeStories)
Funcionalidade: Consultar Convênio
    Para consultar os dados de um convênio 
    Como um membro de um proponente apto a consultar convênios
    Desejo pesquisar/selecionar/consultar um convênio
(stories/consultar_convenio.storyConverted)
Scenario: Um usuário convenente efetua login no SICONV e seleciona um convênio
Carregando dados iniciais no banco de dados siconv_trunk
Dado que existe o usuário do tipo convenente, com login "32194447849", cadastrado no proponente "19876424000142" com perfil "CADASTRADOR_PRESTACAO_CONTAS"
E existe o convênio "900300/2010" associado ao proponente "19876424000142"
Dado que vou para a tela "Tela de Login"
Quando informo "32194447849" no campo "CPF"
E informo "123" no campo "Senha"
Quando clico em "OK"
Então estou na tela "Mostra Principal"
Quando acesso o menu "Execução" e clico no item de menu "Consultar Convênios/Pré-Convênios"
Então estou na tela "Consultar Convênios/Pré-Convênios"
Quando informo "900300/2010" no campo "Número do Convênio/Pré-Convênio"
E clico em "Consultar"
Então estou na tela "Resultado da Consulta de Convênio"

Repare que agora a mensagem de erro é que existe referência cíclica mas isso não acontece. Veja os steps

Funcionalidade: Consultar Convênio
    Para consultar os dados de um convênio 
    Como um membro de um proponente apto a consultar convênios
    Desejo pesquisar/selecionar/consultar um convênio

    Cenário: Um usuário convenente efetua login no SICONV e seleciona um convênio

        Dado que existe o usuário do tipo convenente, com login "32194447849", cadastrado no proponente "19876424000142" com perfil "CADASTRADOR_PRESTACAO_CONTAS"
        E existe o convênio "900300/2010" associado ao proponente "19876424000142"

        Acesso ao Sistema com usuário "32194447849" e senha "123"

        Quando acesso o menu "Execução" e clico no item de menu "Consultar Convênios/Pré-Convênios"
        Então estou na tela "Consultar Convênios/Pré-Convênios"

        Quando informo "900300/2010" no campo "Número do Convênio/Pré-Convênio"
        E clico em "Consultar"
        Então estou na tela "Resultado da Consulta de Convênio"
Funcionalidade: Login
    Como um: usuário cadastrado
    Eu quero: acessar o Siconv
    De modo que: eu tenha acesso às funcionalidades associadas ao meu perfil
    Cenário: Acesso ao Sistema com usuário "{usuário}" e senha "{senha}"

        Dado que vou para a tela "Tela de Login"
        Quando informo "{usuário}" no campo "CPF"
        E informo "{senha}" no campo "Senha"
        Quando clico em "OK"
        Então estou na tela "Mostra Principal"
botelhojp commented 11 years ago

Esta mensagem de "Referência cíclica entre cenários" foi um erro que corrigimos nesta última snapshot. Confirme se a linha 132 da classe BehaveContext.java tem: "fail = null;" e na linha 126: "Assert.fail(bm.getString("exception-fail-step", step, fail.getMessage()));"

marvinsiq commented 11 years ago

Não teve como conferir o código pois estou rodando de um servidor de integração contínua. Mas limpei novamente o repositório maven e executei diversas vezes os testes e parece que agora está funcionando tudo OK. Pode fechar a issue.