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());
}
}
}
Tudo correto?