Testes de Unidade

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("joaodasilva@hotmail.com");
        atendente.setRegistro("5689654");
        instance.persistir(atendente);
        verify(repositorio).persistir(atendente);
    }
    
}

nao entendi oque o método testListarTudo testa.

vc está mockando List, acho desnecessário

abrasss

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

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

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/