Teste junit

4 respostas
programaçãojava
S

iniciando teste junit e não está funcionando os testes desta classe. alguem pode me ajudar a resolver?
@h4ck3rsnoop @ednaldopds

package negocio;


import java.util.List;

/**
 * Classe de negócio para realizar operações sobre as contas do banco.
 * Mídias
 */
public class GerenciadoraContas {

	private List<ContaCorrente> contasDoBanco;

	public GerenciadoraContas(List<ContaCorrente> contasDoBanco) {
		this.contasDoBanco = contasDoBanco;
	}

	/**
	 * Retorna uma lista com todas as contas do banco.
	 * return lista com todas as contas do banco
	 */
	public List<ContaCorrente> getContasDoBanco() {
		return contasDoBanco;
	}

	/**
	 * Pesquisa por uma conta a partir do seu ID.
	 * param idConta id da conta a ser pesquisada
	 * return a conta pesquisada ou null, caso não seja encontrada
	 */
	public ContaCorrente pesquisaConta (int idConta) {

		for (ContaCorrente contaCorrente : contasDoBanco) {
			if(contaCorrente.getId() == idConta)
				return contaCorrente;
		}
		return null;
	}
	
	/**
	 * Adiciona uma nova conta à lista de contas do banco.
	 * param novaConta nova conta a ser adicionada
	 */
	public void adicionaConta (ContaCorrente novaConta) {
		this.contasDoBanco.add(novaConta);
	}

	/**
	 * Remove conta da lista de contas do banco.
	 * param idConta ID da conta a ser removida 
	 * return true se a conta foi removida. False, caso contrário.
	 */
	public boolean removeConta (int idConta) {
		
		boolean contaRemovida = false;
		
		for (int i = 0; i < contasDoBanco.size(); i++) {
			ContaCorrente conta = contasDoBanco.get(i);
			if(conta.getId() == idConta){
				contasDoBanco.remove(i);
				break;
			}
		}
		
		return contaRemovida;
	}

	/**
	 * Informa se uma determinada conta está ativa ou não.
	 * param idConta ID da conta cujo status será verificado
	 * return true se a conta está ativa. False, caso contrário. 
	 */
	public boolean contaAtiva (int idConta) {
		
		boolean contaAtiva = false;
		
		for (int i = 0; i < contasDoBanco.size(); i++) {
			ContaCorrente conta = contasDoBanco.get(i);
			if(conta.getId() == idConta)
				if(conta.isAtiva()){
					contaAtiva = true;
					break;
				}
		}
		
		return contaAtiva;
	}
	
	/**
	 * Transfere um determinado valor de uma conta Origem para uma conta Destino.
	 * Caso não haja saldo suficiente, o valor não será transferido.
	 * 
	 * param idContaOrigem conta que terá o valor deduzido
	 * param valor valor a ser transferido
	 * param idContaDestino conta que terá o valor acrescido
	 * return true, se a transferência foi realizada com sucesso.
	 */
	public boolean transfereValor (int idContaOrigem, double valor, int idContaDestino) {
		
		boolean sucesso = false;
		
		ContaCorrente contaOrigem = pesquisaConta(idContaOrigem);
		ContaCorrente contaDestino = pesquisaConta(idContaDestino);
		
//		if(contaOrigem.getSaldo() >= valor){
			contaDestino.setSaldo(contaDestino.getSaldo() + valor);
			contaOrigem.setSaldo(contaOrigem.getSaldo() - valor);
			sucesso = true;
//		}
	
		return sucesso;
	}
	
}

4 Respostas

peczenyj

cara vc postou so o codigo do gerenciador de contas, o q acontece com os testes? q testes vc tem? o q falha?

S

o teste do metodo transferevalor não ta aceitando de jeito nenhum. mas acho que pode ser algum bug no netbeans

peczenyj

como assim nao aceita?

alias de cara tem um problema ai: vc nao verifica se as contas origem e destino sao diferentes de null, no caso de uma conta nao encontrada.

e isso é o que causa o null pointer exception.

o q eu faria: ao inves de setSaldo, eu criaria os metodos saca e deposita , o primeiro retorna um boolean.

se vc consegue sacar da primeira com sucesso, entao vc consegue depositar na segunda sem grilo.

esses metodos vao fazer os calculos com o saldo.

S

obrigado pela força.

Criado 10 de setembro de 2018
Ultima resposta 10 de set. de 2018
Respostas 4
Participantes 2