Escrevi para esta classe que faz algumas coisas (talvez isso seja uma violação do Princípio da Responsabilidade Única). Agora percebo que alguma outra parte do projeto precisa de uma parte dessa lógica e a maneira como vou expô-la é extrair uma classe do meu System Under Test original.
Antecipo ser capaz de fazer isso sem precisar alterar nenhum código de teste, mas quando terminar, você poderá argumentar que o teste não é mais um teste de unidade . Ele estará testando a classe original e a classe que eu extraí. Em outras palavras, terei um caso de teste, mas dois sistemas em teste.
Devo refatorar meu código de teste depois que terminar? IE: Crie um ExtractedClassTest e mova todos os testes relevantes do OriginalClassTest para ele? Parece que pode ser um pouco arriscado: posso perder alguma cobertura no processo, pode não ser tão simples quanto mover um teste e acabaria reescrevendo algum código de teste que sei que costumava funcionar, mas que pode não ser mais, etc.
Por outro lado, se eu deixar o OriginalClassTest como está, posso ver que isso é um problema de manutenção de teste. Vai ser um pouco confuso descobrir onde estão os testes da ExtractedClass. Sua primeira impressão será que ela não existe. Com o tempo, com muitas refatorações de códigos de produção, isso pode se tornar um problema sério.
Eu sou novo no TDD, então gostaria de um conselho de um especialista. Obrigado!
fonte