Pergunta

O que é a melhor maneira de testar o código GWT?

GWTTestCase no modo hospedado é muito lento e nenhum dos quadros zombaria trabalho.

Atualmente estamos seguindo MVC como sugerido na http://robvanmaris.jteam.nl/2008/03/09/test-driven-development-for-gwt-ui-code/ e usando GWTMockUtilities desarmar () e restaurar () para widgets de simulação . E nós havent descobriu uma maneira de testar View em GWT MVC. Existe uma melhor maneira de testar o código GWT?

Foi útil?

Solução

Se você está procurando para testar os widgets do GWT em isolamento, não há muitas opções. Você pode usar um GWTTestCase instanciar seus widgets e testá-lo através de sua API, que é o que o Google faz para o GWT widgets de si: Fonte para RadioButtonTest

No entanto, o mecanismo de disparo de eventos não funciona em GWTTestCases, o que significa que você não pode fazer coisas como programaticamente clicar em um botão e esperar que algum método de retorno de chamada onClick () para ser chamado em um ouvinte. Também é difícil se não impossível de obter no DOM subjacente, por isso pode não ser a melhor ferramenta para testar código emissor de HTML de baixo nível.

Parece que você está seguindo todos os passos certos; O artigo de Rob fornece uma excelente descrição de como escrever código testável usando o padrão de design Model-View-Presenter (MVP). Quanto mais lógica que você manter-se fora da camada de visão, melhor. Quando isso não for possível, use uma ferramenta como o selênio para criar testes focadas de comportamento UI dinâmica.

Eu segui uma estratégia similar - MVP com código mínimo nos widgets. Em alguns casos eu fiz escrever algum código que iria envolver a classe de grade, então eu era capaz de instanciar o meu componente em um GWTTestCase, passá-lo um Grid, invocar alguns métodos em meu componente, e verificar o estado do Grid. Eu escrevi um artigo para Melhor Software sobre Test-First GWT, que você pode ler no meu blog .

Se você estiver olhando para código de teste que usa classes GWT-UI não (como a codificação de URL ou dicionários), você vai precisar usar GWTTestCase, ou então seguir estratégias de acondicionamento semelhantes até que o código é simples demais para quebrar. Em seguida, use um teste de integração com uma ferramenta como o selênio, ou algumas GWTTestCases específicas que único teste que você está usando a biblioteca corretamente - "Não testar o quadro" como J.B. Rainsberger diz:

Outras dicas

Como um alernative, você deve tentar GWT-test-utils , que conseguem executar o código do cliente GWT em um autônomo JVM e fornece algum recurso para Mock o que quiser (componente, serviços RPC, etc ..)

O que funcionou para mim:

Use clássica modelo / view / controller (por exemplo, nenhuma lógica de negócios na vista ou controlador; controladores única traduzir os eventos da visualização para chamadas de método do modelo).

desacoplar o modelo e controlador de código a partir da visão de widgets GWT e quaisquer outras classes que dependem GWT e não pode ser instanciado em uma JVM velho liso. Você pode, em seguida, testá-los com boa JUnit de idade.

escrever testes end-to-end para testar o sistema através da interface gráfica para garantir que os modelos e controladores estão ligados aos pontos de vista corretamente. Encontramos mais rápido para implementar e iniciar o aplicativo e, em seguida, interagir com ele através de um navegador controlado a partir de JUnit com WebDriver do que usar GWTTestCase!

Use JMock para testar chamadas assíncronas como este: http://www.jmock.org/gwt. html .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top