Teste de Software com Mock

3 respostas
asobrab

Ola!

Estou utilizando o JUnit para realizar os testes no desenvolvimento de um sistema. No entanto, eu preciso simular(mock) alguns objetos de negócios pois estes NAO deverão serem processados durante a execução dos testes. Como exemplo cito o seguinte exemplo:

CLASSE DE TESTE
//imports....
public class LivroEditarActionTest extends MockStrutsTestCase {
	
          //construtor...

        protected void setUp() throws Exception {
         //configuracoes iniciais...
	}

  public void testEditarLivro(){
         /* codigos para teste.... */
       
     /* codigos para SIMULAR os objetos indicados */

     actionPerform(); // Faz executar *LivroEditarAction* 

    LivroEditarForm form = (LivroEditarForm)getActionForm();
    assertNotNull(form.getLivro());
    verifyForward("editarLivro");
   }
}
CLASSE A SER TESTADA
public class LivroEditarAction extends DispatchAction {
	
        public ActionForward editarLivro(...parâmetros...) 
                                     throws Exception {
 
               /* codigos iniciais... */
      
     LivroEditarForm editarLivro = (LivroEditarForm)form;

       //Esta classe acessa o BD. DEVE SER SIMULADA via mock...
    BibliotecaGerenciador bibGer = new BibliotecaGerenciador(); 

     //DEVE ser SIMULADO via mock...
    LivroVO livroVO = bibGer.getLivroPorCodigo(id);
    editarLivro.setLivro(livroVO);

               /* codigos finais... */

	return mapping.findForward("editarLivro");
        }
}
Assim, fazendo uma pesquisa encontrei alguns frameworks como EasyMock e JMock. O primeiro me pareceu mais popular. Alguêm por aki utiliza JUnit + EasyMock ou JUnit + JMock? Seria possível a simulação dos Objetos BibliotecaGerenciador e LivroVO como apresentado acima?

3 Respostas

cv1

JMock:

Mock mock = new Mock(Homer.class);
Homer homer = (Homer) mock.proxy();

mock.expects(once()).method("burp").will(returnValue("BURP!"));

assertThat(homer.burp(), eq("BURP!"));
asobrab

Hum… sinceramente NAO entendi o seu exemplo. Nao sei como aplica-lo no meu exemplo…
O que seria esse “Homer.class”? Poderia me dar umas dicas do que está acontecendo nesta linha:

cv1

Homer eh uma classe que tem o metodo burp(), que eu quero mockar, e fazer retornar o valor “BURP!” :wink:

Sobre a definicao do mock:

Se vc tirar a sujeira da sintaxe, fica:

Literalmente, ‘mock espera uma invocacao do metodo “burp” e vai retornar o valor “BURP!”’. :wink:

Criado 13 de outubro de 2006
Ultima resposta 16 de out. de 2006
Respostas 3
Participantes 2