marcelinhonbs:
Entao cara, eu procurei o Mockito mas eu so consegui usar ele com o JUNIT, como eu faço pra usar ele sem o JUNIT? Se eu conseguisse usar algo tipo o metodo WHEN seria show. Você teria pra me mostrar um exemplo da ultima ideia que voce falo, eu nao consegui entender como ficaria para o meu BO acessar esse DAO
Obrigado
Vc deve ter uma interface tipo ClienteDao e uma implementação XPTOClienteDAO.
Você pode criar uma HashClienteDAO que implementa ClienteDAO, mais ou menos assim
public class HashClienteDao implements ClienteDAO {
private Map<Integer, Cliente> clientes = new HashMap<Integer,Cliente>();
// implementação de todos os métodos do DAO
// alguns exemplos
public Cliente findById(Integer id) {
return clientes.get(id);
}
public List<Cliente> findAll(){
return new ArrayList<Cliente>(clientes.values());
}
// métodos especificos
public List<Cliente> findAllByUF(UF uf){
List<Cliente> result = new ArrayList<Cliente>();
for (Cliente c : clientes.values(){
if (c.getUd().equals(uf) ){
result.add(c);
}
}
return c;
}
public List<Cliente> findBonsClientes() {
return Arrays.asList( findByID(9) , findByID(11) , findByID(15))
}
}
ou seja, vc faz todos os métodos que interessa usar o mapa interno para procurar o que precisa. Se for necessário vc pode escrever o método com lógica fixa como no ultimo método
Para preencher o mapa pode fazê-lo no construtor ou em algum outro ponto criando um método publico na classe ( não na interface) para poder adicionar os objetos.
O seu BO deve ter uma assinatura parecida com esta:
public class ClienteBO {
ClienteDAO clienteDAO;
public ClienteBO ( ClienteDAO clienteDAO){
this.clienteDAO = clienteDAO;
}
}
Ela não depende da classe verdadeira que implementa a interface. Então é só configurar no seu testes para que seja usada a classe de teste e não a verdadeira. Algo assim
@Test
public void testClientesBons (){
HashClienteDao clienteDao = new HashClienteDao ();
clienteDao.addCliente ( new Cliente("Fransico" , 'SP"));
clienteDao.addCliente ( new Cliente("Maria" , 'RJ"));
// etc ...
ClienteBO bo = new ClienteBO (clienteDao);
bo.fazAlgumaCoisaComClientesBons();
}