Ae galera
Tenho uma aplicação que tá em Spring 2.0 e vamos mudar pra EJB, e lendo a revista MJ vi na parte de teste que o autor usou Mock pra testar. Tô tentando fazer aki mas tem metodo que nao tem como simular classes
public interface PessoaDAO{
Pessoa buscaCodigo(int codigo);
}
public class Pessoa {
PessoaDAO dao; // injetado pelo spring
public static int fazAlgo() {
// Aki nao consigo chamar o DAO aki pq nao é statico e nao consigo simular pra fazer o teste
dao = new PessoaDAO(); // ai tenho q instanciar
dao.procuraAlgo();
}
}
Alguem sabe como fazer isso?
}
Para usar variaveis e atributos non-static dentro de uma função static tem que instanciar a classe, usando um new Pessoa() mesmo…
Outra coisa, da uma olhada em JUnit Test pra testar seu Spring!
Como o Guilherme falou use JUnit, mais uma sugestão usa Easymock e faça uma classe PessoaTeste para testar o serviço.
O problema é esse, como vou testar o metodo fazAlgo() da classe pessoa? [editei o metodo para retornar um inteiro]
Eu imagino assim
public class PessoaTest {
public testPessoaFazAlgo() {
Pessoa p = new Pessoa();
Assert.assertEqual(10, p.fazAlgo());
}
}
Mas eu preciso saber o que vai acontecer quando eu chamar o dao. E nesse caso não consigo usar o EasyMock, igual o ronybrand falou, porque eu instancia o dao dentro do metodo.
Se voce quer saber o que acontece tanto nesse faz algo quanto no DAO, aconselho dois testes diferentes , um pra cada.
E não estou vendo necessidade do static!
Explica melhor o que quer fazer, e quem sabe podemos ajudar mais!
Eu quero testar a classe pessoa que tem um metodo de negocio que é statico. O problema é que por ele ser estatico não consigo usar o dao que é injetado pelo spring (que futuramente será um EJB), e entao tenho que instanciar outro dao, e instanciando esse outro dao, nao consigo emular dados com o EasyMock
Os metodos estaticos tao pras buscas e pra alguns metodos de negocio, por exemplo, não precisaria ter uma pessoa instanciada pra buscar ela, ou não o método tem a ver com Pessoa mas não necessita de ter um objeto Pessoa