Teste unitário... duvida curiosa

10 respostas
bzanchet

Olá,

public class ExitAction extends AbstractAction implements Action { public void actionPerformed(ActionEvent evt) { System.exit(1); } }

Como ficaria um teste unitário desse código?

10 Respostas

bzanchet

Que tal assim:

public class ExitActionTest extends TestCase { private ExitAction exitAction = new ExitAction(); public void testActionPerformed() { exitAction.actionPerformed(null); fail("Não saiu do programa =D"); } }
Funciona, mas, pelo menos na interface do eclipse, ele simplesmente ignora o teste… roda, e não falha, mas não aparece como se houvesse sucesso.

Rubem_Azenha

Vc tem certeza que uma classe assim precisa de testes? :slight_smile:

bzanchet

Não. Mas e se o contrato exigir (http://jroller.com/page/obie?entry=serious_about_agile) ?

Lich_King

mas pra q servem esse testes unitários? :?

Rubem_Azenha

Para garantir que a sua classe funciona:

http://www.guj.com.br/java.tutorial.artigo.40.1.guj

dkotvan

O contrato exige que ao menos 90% do código seja testado, há exceções como este caso que você apresentou que entram nos 10% não testado.

Este teste que você apresentou não é bom porque ele interrompe a execução e os testes seguintes não serão executados. Se você conseguir forçar este teste para ser o último a ser executado você estará criando uma dependencia na ordem em que os testes são executados o que é muito ruim já que vai contra o próprio conceito de teste unitário.

rodrigoy

Bom senso… o desenvolvimento de sistemas se resume a bom senso…
O risco da tal action dar problema é pequeno, digo ainda que é um código onde o teste é mais importante na tela do que na classe de teste.

cv1

vc nao precisa chamar System.exit(). Alias, chamar essa funcao eh tipo dizer “eu nao sei como sair desse programa de forma decente, vou abandonar tudo e a JVM se vira!”

rodrigoy

ha ha ha ha ha

fabiofalci

Tu pode criar um mock para essa classe…

http://www.easymock.org/

Se o metodo for chamado, tu pressume que vai funcionar!!

Criado 5 de agosto de 2006
Ultima resposta 8 de ago. de 2006
Respostas 10
Participantes 7