Apache Wicket e testes unitários

2 respostas
viniciusv

Oi. Alguém aí já trabalhou com o Apache Wicket? Como voces fazem testes unitários pros seus componentes de tela (e seus tratadores de eventos) dada a dependência a várias chamadas a métodos estáticos e finais de algumas classes do framework (como a classe Application, por exemplo)? Estou há alguns dias tentando mockar essas chamadas com o PowerMock (visto que mockadores tradicionais, como o JMock e o EasyMock, não permitem mockar métodos estáticos e finais), mas sem muito sucesso e com o código cada vez mais complexo. Embora no Wicket haja uma classe WicketTester, ao meu ver, ela é mais destinada para testes funcionais, visto que ela usa o Jetty pra rodar a aplicação e executar os testes.

Alguém já passou por isso?

2 Respostas

peczenyj

Ola

Existem algumas formas de vc injetar esta testabilidade - se ninguem aparecer com uma ideia melhor

public void metodo(parametro p){
   if(p.valido()){
      ClasseXPTO.metodo(p);
   }
}

Ok, vc não consegue mockar a Classe, mas vc pode fazer algo como

private InterfaceXPTO objetoXPTO; + getters / setters

public void metodo(parametro p){
   if(p.valido()){
      this.objetoXPTO.metodo(p);
   }
}

Neste caso, a InterfaceXPTO possui o ‘metodo(parametro p)’ e na sua execução normal vc pode injetar um objeto cuja classe implementa a InterfaceXPTO e seja um “proxy” para a ClasseXPTO. Para fins de teste vc pode injetar outro objeto, um mock, que responde aos seus testes da forma apropriada.

Vc quer ter certeza que o metodo invoca outro metodo de outro objeto, e isso é mamão com açucar. O teste se esta correta a integração entre esta classe E o proxy pode ser visto em um teste de integração e/ou aceitação.

Esta é uma forma. agora é ver se vale a pena.

viniciusv

peczenyj, Não é esse o meu problema. Não sou eu que faço chamadas explícitar a estes métodos static/final. São as classes de componentes de tela (as quais estendo pra criar meus componentes customizados) que, por trás dos panos, fazem estas chamadas. Algo assim ó:

Tem alguma idéia?
=|

Criado 12 de junho de 2009
Ultima resposta 12 de jun. de 2009
Respostas 2
Participantes 2