demoiselle / behave

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

Null Pointer Exception no Então obtenho #413

Closed malaguti closed 8 years ago

malaguti commented 8 years ago

Caros colegas. Sinceramente eu já tentei de tudo, e não consigo guardar um texto, referente à um número de DSI. O log de execução está assim:

Scenario: Executa pegar número DSI usuário logado Dado que estou na tela "Menu" Quando movo o mouse sobre "Menu Importação" Quando movo o mouse sobre "Menu Importação->Simplificado" Quando movo o mouse sobre "Menu Importação->Simplificado->Consultas" Quando clico em "Menu Importação->Simplificado->Consultas->DSI distribuidas" Então será exibido "DSI Distribuídas" Dado que estou na tela "Consultar DSI Distribuída" Então obtenho "" do campo "TxNumDSIDistribuidaUsuarioLogadoDetalhe" (FAILED) (java.lang.NullPointerException)

O mapeamento da página é:

@ElementMap(name = "TxNumDSIDistribuidaUsuarioLogadoDetalhe", locatorType = ElementLocatorType.XPath, locator = "html/body/div[4]/div/div/form[2]/div[1]/div[1]/div/div/div/div[2]/div/div/div[1]/table/tbody/tr[1]/td[1]/a/span[1]") private TextField TxNumDSIDistribuidaUsuarioLogadoDetalhe;

O XPath foi checado e re-checado com todas as ferramentas disponíveis. O que o XPathChecker retorna quando eu coloco o XPath é: 1: 16/0000028-9 /

Preciso de ajuda para saber o que eu estou fazendo de errado, ou se eu topei com algum bug.

Desde já grato por toda a ajuda.

malaguti commented 8 years ago

Só agora apareceu, ou só agora eu vi... Um dos dois. Na instrução Então obtenho, do cenário "Executa pegar número DSI usuário logado", apareceu aquele triangulo amarelo. Seu conteúdo é: "No step is matching " do campo "TxNumDSIDistribuidaUsuarioLogadoDetalhe" !-- Cenário que navega o Workflow até a tela de detalhes da DSI >" Sendo que este comentário (!-- Cenário que navega o Workflow até a tela de detalhes da DSI), está logo acima do cenário seguinte. Decididamente esta informação está me levando a pensar que eu tenho algum problema com a instrução de mapeamento da tela.

juliancesar commented 8 years ago

Olá @malaguti, você conseguiu avançar ou continua com o problema?

malaguti commented 8 years ago

Oi Julian. Eu contornei o problema. Tiago Tosta me informou que o problema era falta de implementação. Ele me informou que textField não era um dos tipos contemplados pela pela instrução "Então obtenho". Como não havia a possibilidade de avançar por esse caminho, eu mudei a minha estratégia para operar um caminho diferente, e chegar ao lugar desejado, mesmo não conseguindo obter o código da DI, para utilizar na chamada da consulta.

Mas fica aqui a dica. A instrução "Então obtenho" pode ser de uma utilidade impar, e deveria ter seu ciclo de implementação completo, contemplando todos os principais tipos encontrados nas páginas de front end.

Outra coisa da qual eu tenho apanhado muito, é encontrar, nas storys que eu tenho pesquisado, instruções que não constam em documentação nenhuma. A instrução acima é um exemplo... Acho que deveria ser feito um esforço no sentido de se documentar as novas implementações. Uma vez que fica impossível um aprendizado, e uma utilização segura das novas frases, sem uma fonte segura de informação sobre elas.

juliancesar commented 8 years ago

@malaguti, estamos fazendo um replanejamento das atividades do DBehave e vamos levar em consideração seus comentários.

Além de seus comentários gostaríamos de contar com suas contribuições para documentar melhor as frases, podemos contar com você?

malaguti commented 8 years ago

Sim @juliancesar. Eu gostaria de ajudar, e, sempre que estiver à meu alcance, eu poderia acrescentar melhorias à documentação das frases. Apenas estou passando um momento no sistema ao qual eu estou alocado, que está exigindo a minha dedicação total. Mas, depois da tempestade, sempre vem a calmaria, e eu gostei muto do dBehave, e gostaria de contribuir.

juliancesar commented 8 years ago

@malaguti, com relação a documentação das frases, você tem alguma sugestão do formato que devemos utilizar para isso?

Hoje o que temos é algo bem simples na documentação geral: http://demoiselle.sourceforge.net/docs/components/behave/reference/lastversion/html/behave-story.html#d0e1447

malaguti commented 8 years ago

Acho que este formato, ṕor ser simples, é clarificante, e facilita o entendimento. Mas, na documentação, por exemplo, falta uma explicação de quando usar, e quando não usar, o encadeamento de [Dado que | Quando |então | E]. E quanto mais exemplos houverem, com relação à utilização das frases, melhor pra quem está aprendendo. Acho que o reuso de story deveria ter uma enfase maior, com vários exemplos. Atualmente aa documentação é "sutil", com relação ao assunto. A parte de grid está bem difícil de entender. Talvez porque me falte o java/JSF. Mas acho que isso não deveria ser pré requisito. Pelo menos é o que eu penso. Acho que todos os colegas poderiam ajudar selecionando, ou mesmo construindo, e enviando, alguns exemplos que foram de ajuda efetiva, quando eles começaram a estudar o dBehave. Você poderia elencar todos tópicos para orientar a galera nessa ajuda. O que é que você acha?

malaguti commented 8 years ago

Eu ia me esquecendo de uma coisa importante. O mapeamento com a utilização de ID, ao invés do xPath. Claro que isso depende do desenvolvimento, mas o aumento de estabilidade, em caso de pequenas mudanças, é tão melhor, que o assunto deveria ser abordado na documentação. Eu, graças à Deus, faço parte de uma equipe que valoriza bastante o trabalho de teste, todos sem exceção adotaram a utilização do ID, para facilitar a automatização dos testes, dando uma estabilidade muito maior aos testes automatizados.

juliancesar commented 8 years ago

@malaguti, obrigado pelas suas considerações, vou analisar as possibilidades e em conjunto tentar encontrar uma maneira de melhorar estas questões, contudo neste momento a prioridade é estabilizar o ciclo de RELEASES e lançar a versão 1.5.2 final com algumas melhorias e correções.

Vou deixar esta issue aberta para que possamos voltar nela em um momento oportuno.

Obrigado pelas contribuições!