Devo escrever um teste para provar que a exclusão de código corrige um bug?

14

Ocasionalmente, vou me deparar com a situação em que consertar um bug requer que eu delete uma seção de código. O purista do TDD iria (eu suponho) defender escrever um teste com falha, excluir o código e depois assistir ao teste passar.

Agora, parece realmente estranho ter um teste afirmando que algum código foi removido. Claro, eu suponho que isso garantiria que ninguém cavasse o controle de origem e colocasse o código de volta, mas vale a pena? Se valer a pena, certamente parece menos valioso do que escrever um teste para código que foi adicionado , certo?

    
por jhewlett 21.02.2013 / 06:21
fonte

1 resposta

50

Você está olhando para o caminho errado. O teste não afirma que o código foi removido. O teste faz afirmar uma certa funcionalidade.

O teste não se importa com a quantidade de código necessária para fazê-lo passar, nem percebe que você removeu algum código. O valor de ter tal teste é o mesmo de qualquer outro teste que você cria devido a um erro: você tem confiança na ausência do bug quando o teste é executado e a integração do teste no processo de construção garante que o erro ocorrerá. provavelmente não será reintroduzido.

No entanto, outra maneira de ver isso do ponto de vista do TDD é a seguinte: Quando você sabe que excluir o código corrige o bug e você , pergunta se deve escrever um teste, você já fez o TDD errado . Uma vez que você comece a trabalhar no bug, você deve primeiro escrever o teste que garanta a presença do bug falhando. Somente depois você corrige o bug real - o que pode exigir a remoção do código ou não - e faz o teste passar. A pergunta que você está fazendo nem sequer surge dessa maneira.

    
por 21.02.2013 / 07:18
fonte