JUnit - Dúvida com Teste unitário

Olá,

Recentemente eu comecei a mexer com teste unitários. Estou usando o JUnit com o Eclipse para isso, e algumas dúvidas apareceram.

A classe q eu estou fazendo é ± a seguinte:

public class Capacidade {
    
    public boolean habilita;
    
    public boolean modoOperacao;    

    public AnalogInSet eaCapacidade;   

    public boolean sdAumentaCap;
    
    public boolean sdDiminuiCap;
    
    public int capacidadeMinima;
    
    public boolean pedidoAumentaCap;
    
    public boolean pedidoDiminuiCap;
    
    public boolean habilitaPotenciometro;
    
      
    public void run() {
        
        /* capacidade habilitada */
        if (habilita) { 
            
            /* modo de operação Manual */
            if (modoOperacao) {
                controleManual();
            /* Operação Automática */
            } else {
                controleAutomatico();
            } // if
        } // if 
    } // run()
    
    
    public void aumentaCapacidade() {
        /* 
         * se a referencia da capacidade foi feita e a leitura é menor que 100,0 %
         * ou se a leitura da capacidade está desabilitada
         */
        sdAumentaCap = ((eaCapacidade != null && eaCapacidade.value < 1000) || !habilitaPotenciometro);
    }
    
    public void diminuiCapacidade() {
        /* 
         * se a referencia da capacidade foi feita e a leitura é maior do que a capacidade mínima
         * ou se a leitura da capacidade está desabilitada
         */
        sdDiminuiCap = ((eaCapacidade.value > capacidadeMinima  && eaCapacidade != null) || !habilitaPotenciometro);
    } 

    
    public void controleManual() {
        if (pedidoAumentaCap && !pedidoDiminuiCap) // pedido Aumenta Capacidade 
            aumentaCapacidade();
        else if (pedidoDiminuiCap && !pedidoAumentaCap) // pedido Diminui Capacidade 
            diminuiCapacidade();        
    }

blz… até ai tudo bem…

então eu peguei e criei uma classe de teste para essa minha classe:

public class CapacidadeTest extends TestCase {
    
    Capacidade cap = new Capacidade();
    AnalogInSet eaCapacidade = new AnalogInSet();


    public void testAumentaCapacidade() {
        
        /* capacidade com referencia nula */
        cap.eaCapacidade = null;
        
	        /* leitura de capacidade desabilitada */
	        cap.habilitaPotenciometro = false;
	        cap.aumentaCapacidade();
	        assertTrue(cap.sdAumentaCap);
	        
	        /* leitura de capacidade habilitada */
	        cap.habilitaPotenciometro = true;
	        cap.aumentaCapacidade();
	        assertFalse(cap.sdAumentaCap);
	        
	    /* referencia feita */
        cap.eaCapacidade = eaCapacidade;
        
	        /* leitura de capacidade habilitada */
	        cap.habilitaPotenciometro = true;
	        
		        /* capacidade acima da capacidade máxima */
		        cap.eaCapacidade.value = 1500; // 150,0 %
		        cap.aumentaCapacidade();
		        assertFalse(cap.sdAumentaCap);
		        
		        /* capacidade abaixo da capacidade máxima */
		        cap.eaCapacidade.value = 900; // 90,0 %
		        cap.aumentaCapacidade();
		        assertTrue(cap.sdAumentaCap);
		        
		    /* leitura de capacidade desabilitada */
		    cap.habilitaPotenciometro = false;
		    
			    /* capacidade acima da capacidade máxima */
		        cap.eaCapacidade.value = 1500; // 150,0 %
		        cap.aumentaCapacidade();
		        assertTrue(cap.sdAumentaCap);
		        
		        /* capacidade abaixo da capacidade máxima */
		        cap.eaCapacidade.value = 900; // 90,0 %
		        cap.aumentaCapacidade();
		        assertTrue(cap.sdAumentaCap);
    }

    public void testDiminuiCapacidade() {
        
        /* capacidade com referencia nula */
        cap.eaCapacidade = null;
        
	        /* leitura de capacidade desabilitada */
	        cap.habilitaPotenciometro = false;
	        cap.aumentaCapacidade();
	        assertTrue(cap.sdAumentaCap);
	        
	        /* leitura de capacidade habilitada */
	        cap.habilitaPotenciometro = true;
	        cap.aumentaCapacidade();
	        assertFalse(cap.sdAumentaCap);
	        
	    /* referencia feita */
        cap.eaCapacidade = eaCapacidade;
        cap.capacidadeMinima = 100; // 10,0 %
        
	        /* leitura de capacidade habilitada */
	        cap.habilitaPotenciometro = true;
	        
		        /* capacidade acima da capacidade mínima */
		        cap.eaCapacidade.value = cap.capacidadeMinima + 50;
		        cap.diminuiCapacidade();
		        assertTrue(cap.sdDiminuiCap);
		        
		        /* capacidade abaixo da capacidade mínima */
		        cap.eaCapacidade.value = cap.capacidadeMinima - 50;
		        cap.diminuiCapacidade();
		        assertFalse(cap.sdDiminuiCap);
		        
		    /* leitura de capacidade desabilitada */
		    cap.habilitaPotenciometro = false;
		    
			    /* capacidade acima da capacidade mínima */
		        cap.eaCapacidade.value = cap.capacidadeMinima + 50;
		        cap.diminuiCapacidade();
		        assertTrue(cap.sdDiminuiCap);
		        
		        /* capacidade abaixo da capacidade mínima */
		        cap.eaCapacidade.value = cap.capacidadeMinima - 50;
		        cap.diminuiCapacidade();
		        assertTrue(cap.sdDiminuiCap);
    }   

}

Ou seja, eu testei as condições para os meus métodos aumentaCapacidade() e diminuiCapacidade()… até ai tudo bem tmb (eu acho pelo menos :grin: .)

Foi ai q surgiu a minha dúvida…

Eu criei um método chamado controleManual(), sem retorno, que basicamente verifica uma condição e chama os métodos aumentaCapacidade() e diminuiCapacidade(). Qual seria a melhor forma de fazer o teste deste método, sem refazer os testes anteriores???

E eu também criei um método run(), que ira usar o método controleManual(), e um outro método q ainda não foi criado…

Como eu faria o teste desse novo método também, sem repetir o código de testes antigos???

Agradeço desde já qualquer tipo de ajuda.

[size=“11”][color=“red”]* Editado: Lembre-se de utilizar BBCode em seus códigos - Matheus [/color][/size] :joia:

Uma maneira legal de fazer isso é lançar exceções em determinadas situações (caso o usuário insira um valor inválido) dai no teste vc faz algo mais ou menos assim:


try {
  meuMetodoQueLancaExcecao(valorParaGerarExcecao);
  fail(); // caso nao lance excecao eh erro.
} catch {Exception e) {
  assertTrue(e instanceof MyException);
}

aqui no trampo fazemos +/- isso

Vlw pela ajuda Darkseid,

Mas ainda ficou uma dúvida na minha cabeça… se alguém puder ajudar eu agradeço mto.

A dúvida é a seguinte:

Seu eu crio um novo método que basicamente só chama métodos já testados, como eu faço para testar as novas funcionalidades deste método sem ficar repentindo o código de testes já feitos anteriormente nos outros métodos???

Muito obrigado.