Testes de Unidade

3 respostas
anderson_lr

Pessoal,

Estou começando agora com testes de unidade e estou meio confuso, ainda não consegui encaixar bem as coisas. Tenho uma classe chamada TratadorDeGerenciarAtendente que cuida do gerenciamento de um atendente (Cadastro, alteração, pesquisas, exclusão...). Criei uma classe de testes pra ela no JUnit utilizando Mockito também. O que acham? Seria mais ou menos por aí?
/**
 *
 * @author PRINCIPAL
 */
public class TratadorDeGerenciarAtendenteTest {
    
    @Mock
    private IAtendenteRepositorio repositorio;
    
    private TratadorDeGerenciarAtendente instance;
    
    
    public TratadorDeGerenciarAtendenteTest() {
    }

    @BeforeClass
    public static void setUpClass() throws Exception {
    }

    @AfterClass
    public static void tearDownClass() throws Exception {
    }
    
    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        instance = new TratadorDeGerenciarAtendente(repositorio);
    }
    
    @After
    public void tearDown() {
    }
    

    @Test
    public void testListarTudo() {
        System.out.println("listarTudo");
        int expResult = 1;
        List lista = mock(List.class);
        when(lista.size()).thenReturn(1);
        when(repositorio.listarTudo()).thenReturn(lista);
        int result = instance.listarTudo().size();
        verify(repositorio).listarTudo();
        assertEquals(expResult, result);
    }
    
    @Test(expected=Exception.class)
    public void testPersistirComObjetoNulo() throws Exception{
        System.out.println("persistir");
        Atendente atendente = null;
        doThrow(Exception.class).when(repositorio).persistir(atendente);
        instance.persistir(atendente);
        fail("Deveria ter lançado uma exception");
    }
    
    @Test()
    public void testPersistir() throws Exception{
        System.out.println("persistir");
        Atendente atendente = new Atendente();
        atendente.setNome("João da Silva");
        atendente.setEmail("[email removido]");
        atendente.setRegistro("5689654");
        instance.persistir(atendente);
        verify(repositorio).persistir(atendente);
    }
    
}

3 Respostas

renanreismartins

nao entendi oque o método testListarTudo testa.

vc está mockando List, acho desnecessário

abrasss

anderson_lr

É que esse método só delega para o repositóirio cara. Ele está assim:

public List<Atendente> listarTudo(){
     return repositorio.listarTudo();
}
LPJava

bem anderson. Vc nao pode mockar a interface List, como tb não poderá mockar se tiver uma String etc. Não faz sentido algum isso ser mockado. pare e pense o motivo…
Vc precisa mockar as suas classes e não a do Java. No meu blog tem dois posts sobre mocks e mockito, dar uma olhada:

http://blog.camilolopes.com.br/mocks/

http://blog.camilolopes.com.br/criando-mocks-com-mockito/

Criado 23 de fevereiro de 2012
Ultima resposta 29 de mar. de 2012
Respostas 3
Participantes 3