Olá,
Tive agora um decepção com JUnit. Queria testar um método privado mas ele exigia que o mesmo fosse público. Não tem porque o método ser público, a não ser para satisfazer o JUnit. É assim mesmo ?
Márcio
Olá,
Tive agora um decepção com JUnit. Queria testar um método privado mas ele exigia que o mesmo fosse público. Não tem porque o método ser público, a não ser para satisfazer o JUnit. É assim mesmo ?
Márcio
O que você deveria testar é o método público que usa este método privado.
Lipe,
Meu método privado constrói uma String de conexão SQL. Eu quero testar se a string contruida estava correta, e não se o método que executa a string ( este método é público ) está correto.
Obrigado,
Márcio
Você tem certeza de que precisa de um teste unitário para ver isso?
O método de construção da String de conexão SQL será sujeito a mudanças constantes? Ele precisará ser testado a cada mudança para homologar a mudança?
Então basta testar o método que executa a string
http://www.artima.com/suiterunner/private2.html
Testes servem para garantir o bom funcionamento da interface pública de sua API. Exemplo:
[code]
class MyClass {
private int state = 0;
public int doSomething() {
prepareState();
return state;
}
private void prepareState() {
state = 1;
}
}[/code]
Não deveria interessar para quem está usando a API (no caso o test case) como que doSomething() faz o trabalho, desde que o trabalho seja feito como esperado.
Se desejar pode mudar o prepareState() como quiser, ou até mesmo omitir a chamada ao mesmo. O que deve continuar funcionando como esperado é o método público doSomething(), justamente por ser público e, portanto, possuir outras classes que dependem do mesmo.
Ao testar um método privado utilizando alguma gambiarra comp reflection, no fundo tudo o que está fazendo é tornando o método público, e agora deve garantir que sempre funcione da mesma maneira, pois há classes que dependem dele, no seu caso um test case.
A única boa razão que consigo pensar para testar métodos privados é ao trabalhar com código de terceiros.
Wilerson e Lipe,
Talvez eu esteja tesetando um método que não precise ser testado. Uma vez pronto, ele não irá sofrer alterações. Talvez eu devesse testá-lo fora do JUnit.
Obrigado a vocês,
Márcio
[quote=marcioa1]Wilerson e Lipe,
Talvez eu esteja tesetando um método que não precise ser testado. Uma vez pronto, ele não irá sofrer alterações. Talvez eu devesse testá-lo fora do JUnit.
Obrigado a vocês,
Márcio[/quote]
Quando for testar o metodo (jah que vao ser raras as vezes) muda o modificador dele na hora do teste…