Estou realizando testes onde preciso mockar um DAO e no framework que estou trabalhando não existe injeção de dependência, portanto estou passando o DAO mockado pelo construtor da classe.
Resumindo: tenho um construtor para classe de produção:
public ModeloService(Modelo modelo, Funcionario usuarioLogado) throws ApplicationException {
this(hibernateFactory.getModeloDAO(), hibernateFactory.getFuncionarioDAO(), hibernateFactory.getModeloRascunhoDAO(), modelo, usuarioLogado);
}
e outro para classe de testes, onde é injeado o DAO mockado:
public ModeloService(ModeloDAO modeloDAO, FuncionarioDAO funcionarioDAO, ModeloRascunhoDAO modeloRascunhoDAO, Modelo modelo, Funcionario usuarioLogado){
this.modeloDAO = modeloDAO;
this.funcionarioDAO = funcionarioDAO;
this.modeloRascunhoDAO = modeloRascunhoDAO;
this.modelo = modeloDAO.obterCompleto(modelo.getCodModelo());
this.usuarioLogado = funcionarioDAO.obter(usuarioLogado.getDoctoCPF());
}
Meu service está assim:
public class ModeloService {
private static final DAOFactory hibernateFactory = DAOFactory.getDAOFactory(DAOFactory.HIBERNATE);
private final ModeloDAO modeloDAO;
private final FuncionarioDAO funcionarioDAO;
private final ModeloRascunhoDAO modeloRascunhoDAO;
private Modelo modelo;
private Funcionario usuarioLogado;
}
Acontece que o construtor de produção não está sendo coberto pelos testes, pois de fato ele não é usado na classe de testes. Tem como resolver isso? Não tenho certeza se utilizar outro construtor para passar DAO no caso de teste está correto.
