Spring - Teste

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