1
resposta

Herança com testes

public class Funcionario {

private String nome;
private String cpf;
private Double salario;

public Funcionario(String nome, String cpf, Double salario) {
    this.nome = nome;
    this.cpf = cpf;
    this.salario = salario;

}

public double getBonificacao() {
    return this.salario * 0.1;
}

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

public String getCpf() {
    return cpf;
}

public void setCpf(String cpf) {
    this.cpf = cpf;
}

public Double getSalario() {
    return salario;
}

public void setSalario(Double salario) {
    this.salario = salario;
}

}

import org.junit.Assert; import org.junit.Test;

public class FuncionarioTest {

@Test
public void deveCriarUmFuncionario() {
    Funcionario barbara = new Funcionario("Barbara", "222222222-09", Double.valueOf(2000.0));

    Assert.assertEquals("Barbara", barbara.getNome());
    Assert.assertEquals("222222222-09", barbara.getCpf());
    Assert.assertEquals(Double.valueOf(2000.0), barbara.getSalario());
//Assert.assertEquals(Double.valueOf(200.0), barbara.getBonificacao());

    System.out.println(barbara.getBonificacao());
}

}

public class Gerente extends Funcionario{

private int senha = 1234;

public Gerente(String nome, String cpf, Double salario) {
    super(nome, cpf, salario);
    this.senha = senha;
}

public int getSenha() {
    return senha;
}

public boolean autentica(int senha) {
    if (this.senha == senha) {
        return true;
    } else {
        return false;
    }
}

}

import org.junit.Assert; import org.junit.Test;

public class GerenteTest {

@Test
public void deveCriarUmGerente() {
    Gerente luis = new Gerente("Luis", "222222222-09", Double.valueOf(5000.0));

    boolean autenticou = luis.autentica(1234);

    Assert.assertEquals("Luis", luis.getNome());
    Assert.assertEquals("222222222-09", luis.getCpf());
    Assert.assertEquals(Double.valueOf(5000.0), luis.getSalario());
    Assert.assertEquals(true, luis.autentica(1234));        

}

}

Na classe FuncionarioTest, porque da o erro <The method assertEquals(Object, Object) is ambiguous for the type Assert> ao fazer o Assert comentado?

Na classe GerenteTest, esta correto passar os parâmetros?

Porque na classe Gerente que estende(herda) a classe funcionário, eu preciso ter os parâmetros nome, cpf e salario, igual esta no super?

1 resposta

Existem esses dois métodos assertEquals(double, double) (passando dois doubles) e assertEquals(Object, Object) (podendo ser dois Doubles)

Você deve explicitar que método vai usar , uma forma seria

 Assert.assertEquals(2000.0, barbara.getSalario().doubleValue());

A primeira instrução de um construtor(implicitamente ou explicitamente ) é uma chamada super com um construtor da classe pai.

Como a classe Funcionaria defini um construtor, todas as filhas devem no seu construtor realizar a chamada para o construtor definido em Funcionario.