Pergunta

Estou fazendo um curso de práticas ágeis e tenho lição de casa.O que me ensinaram é que antes de alterar o código (refatorar ou adicionar funcionalidades) devo adicionar alguns testes, para ganhar confiança e ter certeza de que não mudarei o comportamento durante a refatoração.Isso é claro e faz sentido, mas e se o código não puder ser testado sem antes fazer alguma refatoração?

Exemplo simples:

public class Summation
{
    private int addend1;
    private int addend2;

    public Summation(int addend1, int addend2)
    {
        this.addend1 = addend1;
        this.addend2 = addend2;
    }

    public int doSum()
    {
        System.out.println(addend1 + addend2);
    }

    // Getters/setters
}

Gostaria de realizar um teste de aceitação/integração usando FIT e verificar se a tabela a seguir foi verificada:

 ----------------------------
| addend1 | addend2 | result |
 ----------------------------
| 1       | 1       | 2      |
 ----------------------------
| 1       | -1      | 0      |
 ----------------------------
| -1      | 1       | 0      |
 ----------------------------
| -1      | -1      | -2     |
 ----------------------------

Mas, porque a função doSum() imprime a soma no fluxo de saída padrão, é difícil escrever um teste para ela (prefiro evitar interceptar a saída padrão).Faria mais sentido refatorar ligeiramente o código para ter um método que retornasse a soma.Mas como tecnicamente "não tenho permissão" para alterar o código antes de escrever qualquer teste, isso não é recomendado.

Você pode me dar alguma dica?Como você procederia?

Obrigado!

Foi útil?

Solução

Parece semelhante a essa questão.

Independentemente de você ter ou não permissão para alterar o código, você é forçado a interceptar o fluxo de saída padrão.Em qualquer caso, faz parte do comportamento.

Outras dicas

Você pode escrever um arquivo test.cpp para chamar Summation.Summation(x,y) com vários valores para x e y em sua tabela e verificar/registrar os resultados.Certifique-se de que os resultados sejam os esperados.Em seguida, você pode editar a classe Summation e executar seus testes novamente (em test.cpp) para garantir que os valores sejam os mesmos que eram inicialmente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top