ht=34 alt=imagem_pdf.jpg src="/imagens/imagem_pdf.jpg" width=34 border=0>
Testes de MIDlets com J2MEUnit
Um framework de testes unitários para Java ME
Saiba como criar testar aplicações em dispositivos com suporte a MIDP, usando um framework open source baseado no JUnit, com um exemplo completo
Marlon Luz
O J2MEUnit é baseado no popular framework de testes JUnit, e facilita o desenvolvimento de testes unitários para aplicações Java ME. Neste artigo veremos a necessidade de se criar um framework específico para a plataforma Micro Edition, e como construir e executar testes unitários utilizando o J2MEUnit.
Necessidade de um novo framework
Uma diferença fundamental entre o JUnit e o J2MEUnit é que o JUnit utiliza a API de Reflection para identificar e executar os testes. O J2MEUnit não pode fazer o mesmo, já que o Java ME não suporta Reflection, e contorna essa limitação providenciando novos mecanismos ou implementando de modo alternativo a construção e execução dos testes.
Originalmente desenvolvido pela empresa RoleModel Software, o J2MEUnit é hoje software livre sob licença CPL (Common Public License). Para instalar o produto, faça o download do arquivo j2meall.zip em sf.net/projects/j2meunit e descompacte o arquivo, que inclui todo o código-fonte e a documentação. Para compilar e executar os testes criados, será necessário incluir no classpath o arquivo J2MEUnit.jar, localizado no diretório lib.
O framework
O principal pacote do J2MEUnit é o j2meunit.framework, onde encontramos as APIs fundamentais: a interface TestMethod, e as classes Assert, TestCase e TestSuite, que permitem criar testes e asserções. Há ainda duas classes TestRunner. A classe j2meunit.midletui.TestRunner é um MIDlet (herda de javax.microedition.midlet.MIDlet) e permite rodar testes com uma interface de usuário mais amigável em dispositivos que implementam o MIDP. A classe j2meunit.textui.TestRunner herda de java.lang.Object, e pode ser usada em outras configurações do Java ME como o CDC.
As classes TestRunner permitem executar os casos de testes (classes que herdam de TestCase), através do método start(). Passamos para este método um array de strings com os nomes completos das classes de teste (pacote + classe), como a seguir:
protected void startApp() {
start(new String[] { "jm.agenda.testes.AgendaTest" });
}
É possível também passar a lista de classes de testes através do atributo J2MEUnitTestClasses no arquivo JAD da aplicação. Neste caso, a classe TestRunner não precisa invocar explicitamente o método start() passando os nomes das classes.
Assim como no JUnit, a classe TestCase herda de Assert; entretanto a quantidade de métodos de asserções oferecidos é bem reduzida, limitando-se ao fundamental. Os métodos setUp() e tearDown() também são utilizados, sendo chamados respectivamente antes e depois da execução de cada método de teste (da mesma forma que no JUnit).
Agora vamos à principal diferença do J2MEUnit com relação ao JUnit. Ao criar a classe de teste herdando de TestCase, devemos redefinir (override) o método suite(). Neste método deve ser criado um objeto do tipo ...