Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

CPF com formato inválido

Criei classes para treinar as exceções no TDD e gostaria de compartilhar com vocês, e se possível, verificarem se tem erros.


public class Cidadao {

    private String cpf;

    public String digiteSeuCPF(String cpf) throws IllegalArgumentException {
        if (cpf.length() != 11) {
             throw new IllegalArgumentException("CPF com formato inválido!\nDigite somente 11 caracteres.");
        } 
        this.cpf = cpf;
        return this.cpf;
    }

    public String getCpf() {
        return cpf;
    }
}
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;

import org.junit.jupiter.api.Test;

public class CidadaoTest {

    @Test
    public void cpfComMenosDe11Caracteres() throws IllegalArgumentException {
        Cidadao cpf = new Cidadao();
        try {
            cpf.digiteSeuCPF("111111");
            fail("Exceção falhou!");
        } catch (IllegalArgumentException err) {
            assertEquals("CPF com formato inválido!\nDigite somente 11 caracteres.", err.getMessage());
        }
    }

    @Test
    public void cpfComMaisDe11Caracteres() throws IllegalArgumentException {
        Cidadao cpf = new Cidadao();
        try {
            cpf.digiteSeuCPF("111111111111111");
            fail("Exceção falhou!");
        } catch (IllegalArgumentException err) {
            assertEquals("CPF com formato inválido!\nDigite somente 11 caracteres.", err.getMessage());
        }
    }

    @Test
    public void cpfCom11Caracteres() throws IllegalArgumentException {
        Cidadao cpf = new Cidadao();
        try {
            cpf.digiteSeuCPF("11111111111");
            //fail("Exceção falhou!"); //irá cair aqui, porque o CPF tem de fato 11 caracteres, ou seja, não houve falha
        } catch (IllegalArgumentException err) {
            assertEquals("CPF com formato inválido!\nDigite somente 11 caracteres.", err.getMessage());
        }
    }
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Tudo correto?

1 resposta
solução!

Oi Lucas,

Está certinho!

Apenas uma observação, no seu teste do CPF válido você pode remover o try/catch, pois é o cenário onde não será lançada uma exception:

@Test
public void cpfCom11Caracteres() {
    Cidadao cpf = new Cidadao();
    cpf.digiteSeuCPF("11111111111");
}

Bons estudos!