| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/04/2008 11:43:10
|
jopss
Java Ninja
![[Avatar]](/images/avatar/0d2f28fbfb3c845930a1cba0672950b1.jpg)
Membro desde: 13/07/2006 18:32:16
Mensagens: 281
Localização: Campo Grande/MS
Offline
|
Olá... estou estudando o JUnit e me deparei com um caso de teste simples, mas que não estou conseguindo implementar. Pesquisei e não achei tbm, pelo menos não como quero.
Tenho uma classe Produto que não pode aceitar valores nulos como ID.
Então no setId eu lanço uma exceção caso o valor passado seja null.
Mas como faço o teste para validar isso?
Estou fazendo assim:
Sendo CommunityFieldsErrorException a exceção que lanço.
E prod meu objeto Produto setado no setUp.
Isso causa exceção no console, e o teste diz que passou.
Mas, se eu tirar o @Test, tbm mostra que passou!! Então está validando ou nao??
Como poderia testar se o setId lançou uma exceção por ter passado valor nulo?
vlww
jopss
This message was edited 2 times. Last update was at 10/04/2008 14:33:35
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/04/2008 12:23:52
|
Rafael Nunes
Moderador
![[Avatar]](/images/avatar/d072677d210ac4c03ba046120f0802ec.png)
Membro desde: 09/10/2003 13:41:06
Mensagens: 2890
Localização: sao bernardo do campo
Offline
|
O primeiro passo seria retirar o tratamento try/catch, se você está esperando que a exception seja lançada, então não deve tratar ela. Mas teoricamente ele deveria não passar no teste pois você capturou a exceção.
This message was edited 1 time. Last update was at 10/04/2008 12:30:12
|
------------------------------------------------------------------
"Think different? I'd be happy if most people would just think..."
http://www.yaw.com.br
http://twitter.com/rafanunes
http://twitter.com/youandwe
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/04/2008 12:25:31
|
sergiotaborda
GUJ Expert
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline
|
O teste está certo apenas retire o try/catch
(P.S. Retire o system.out.print também)
This message was edited 1 time. Last update was at 10/04/2008 12:26:08
|
Criando sua própria API de Validação
Blog do MiddleHeaven |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/04/2008 13:03:58
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
O ex.printStackTrace() não causa uma exceção no console. Só imprime. A exceção ocorrida é tratada no catch, impressa e então descartada. Como vc não lança a exceção para o JUnit, seu teste falha. Isso mostra o quão nocivo é descartar exceções dessa forma. Se você quiser capturar a exceção crítica para gerar um log, mas não perde-la, pode fazer: Imprimir a exceção não é uma boa forma de log. Aliás, nem sempre essa á uma boa prática. Entre no blog do Sergio, e dá uma lida nos artigos de exceções. São muito bons.
This message was edited 1 time. Last update was at 10/04/2008 13:05:09
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/04/2008 14:01:46
|
jopss
Java Ninja
![[Avatar]](/images/avatar/0d2f28fbfb3c845930a1cba0672950b1.jpg)
Membro desde: 13/07/2006 18:32:16
Mensagens: 281
Localização: Campo Grande/MS
Offline
|
O ex.printStackTrace() não causa uma exceção no console. Só imprime.
A sim, acho que me expressei mal...
Funfo, mas só uma dúvida. Faço isso:
E ele me lança:
Opa! Mostrou a exceção e tal... "model.Product - setId == null" é a mensagem da minha exception.
Mas verifiquei que se eu comentar o @Test, faz a mesma saída! Então dá na mesma inserir a exceção na annotação @Test e não inserir nada?
No caso eu queria algo que verificasse a exceção lançada e "passasse no teste" caso tal exceção ocorresse. Ou estou pensando errado?
jopss
This message was edited 1 time. Last update was at 10/04/2008 14:03:56
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/04/2008 14:05:07
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Não, inserir na anotação deveria fazer o comportamento que você disse, o teste passar quando a exceção for lançada... engraçado, eu uso isso aqui direto e sempre funciona. Tem certeza que vc está capturando a mesma exceção? Do mesmo pacote?
This message was edited 1 time. Last update was at 10/04/2008 14:05:37
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/04/2008 14:32:32
|
jopss
Java Ninja
![[Avatar]](/images/avatar/0d2f28fbfb3c845930a1cba0672950b1.jpg)
Membro desde: 13/07/2006 18:32:16
Mensagens: 281
Localização: Campo Grande/MS
Offline
|
Opa! descobri o erro. Eu estava misturando códigos de versões diferentes. Passei a usar somente as anotações do JUnit 4 e funfo do geito que queria!
Pra quem passa por aqui e estiver duvidas, siga esta pagina e não tem erros:
http://junit.sourceforge.net/doc/cookbook/cookbook.htm
vlw a todos!!
jopss
|
|
|
 |
|
|