Tutorial do jMock para iniciantes com o Projeto de teste
O que é o jMock?
O jMock é uma biblioteca que ajuda a criar o desenvolvimento orientado por testes do código Java com objetos simulados. jMock podemos testar a classe de forma independente que depende de outra classe.
Suponha que, se uma classe depende de outra, podemos criar uma simulação da classe dependente e definir as propriedades iniciais para testar a classe dependente.
Exemplo de tutorial do jMock:
Observação: estamos usando a plataforma Eclipse para este projeto de teste. Você pode fazer o download do Eclipse em aqui.
Certifique-se de que Ambiente de tempo de execução do Java SE já esteja instalado para que o instalador do Eclipse inicie a instalação.
Crie um projeto de teste em java chamado Projeto de teste e inclua os seguintes jars em seu classpath:
- jmock-2.5.1.jar
- hamcrest-core-1.1.jar
- hamcrest-library-1.1.jar
- JUnit-4.5.jar
Crie uma interface chamada ITestInterface e coloque o seguinte código nessa interface:
teste de pacote;
interface pública ITestInterface
{
public int test();
}
Crie TestClass1 e coloque o seguinte código nessa classe
teste de pacote;
classe pública TestClass1 implementa ITestInterface
{
público int test()
{
retorno 3;
}
}
Crie TestClass2 e coloque o seguinte código nessa classe
teste de pacote;
classe pública TestClass2
{
ITestInterface testInterface;
público TestClass2()
{
this.testInterface=testInterface;
}
público int testMock()
{
int result=testInterface.test();
resultado do retorno;
}
}
Crie TestClass3 e coloque o seguinte código nessa classe
teste de pacote;
importar junit.framework.Assert;
importar org.jmock.Mockery;
importar org.junit.Test;
classe pública TestClass3
{
@Teste
public void testJmock()
{
org.jmock.Mockery TestInterfaceMock= new Mockery();
final ITestInterface testInterface=TestInterfaceMock.mock(ITestInterface.class);
TestInterfaceMock.checking(new org.jmock.Expectations()
{{
oneOf(testInterface).test();
will(returnValue((3)));
}});
int j=testInterface.test();
System.out.println(j);
Assert.assertEquals(j, 3);
}
}
A partir do exemplo acima, fica claro que TestClass1 implementa a interface ITestInterface. Aqui, se observarmos que TestClass2 é dependente de TestClass1, então, para torná-lo testável por unidade, não estamos fazendo new de TestClass1 em TestClass2, mas sim usando um objeto de simulação.
Em TestClass3, estamos criando o objeto de simulação de ITestInterface. Estamos definindo a expectativa de que esse objeto retorne 3 quando for chamado durante o teste de unidade de TestClass2. Por exemplo, em TestClass3, quando fazemos uma chamada para testInterface.test(), a chamada vai para TestClass2. Em TestClass2, quando chamamos testInterface.test(), o valor é retornado pelo objeto de simulação.
Para testar o exemplo acima, clique com o botão direito do mouse em TestClass3 e selecione executar como teste Junit.
A tela a seguir será exibida:
Caso de teste executado com sucesso!
Respostas de 5
Posso saber como o testclass2 é dependente do testclass1?
Obrigado por compartilhar as informações valiosas sobre o jmock! Foi uma boa leitura!
De nada, Tanuja 🙂 Fico feliz em ajudar!
Boa postagem
Obrigado 🙂