Quero apresentar o conceito de testes de unidade (e testes em geral) aos meus colegas de trabalho; No momento, não há testes e as coisas são testadas executando as tarefas na interface do usuário para ver o resultado desejado. Como você pode imaginar, o código está muito acoplado à implementação exata - até mesmo resultando em código que deve estar em uma classe e reutilizado no sistema, sendo copiado e colado nos métodos.
Devido a requisitos alterados, fui solicitado a modificar um módulo que escrevi anteriormente e que é bastante flexível (não tanto quanto eu gostaria, mas da melhor forma possível, sem a necessidade de introduzir muitos outros conceitos). Decidi incluir um conjunto de testes de unidade com meu código revisado para "provar" que ele funciona conforme o esperado e demonstrar como o teste funciona; Não estou seguindo o TDD verdadeiro, pois parte do código já está gravado, mas espero seguir alguns conceitos do TDD para o novo código que precisarei criar.
Agora, inevitavelmente, tenho certeza de que me perguntarão por que estou demorando mais de um dia ou dois para escrever o código, já que partes do que eu vou interagir já existem no sistema (embora sem testes e com muita rigidez). acoplado) e, quando eu fizer o check-in do código, ser-lhe-á perguntado o que é esse projeto de "testes". Eu posso explicar o básico dos testes, mas não consigo explicar os benefícios reais da maneira que os outros entenderiam (porque eles acham que o teste exige que você execute o aplicativo por conta própria, pois muitas vezes a interface do usuário real é importante para determinar se o recurso "funciona"). " ou não). Eles não entendem a idéia de acoplamento flexível (claramente evidente pelo fato de que nada é fracamente acoplado; não há nenhuma interface fora do código que escrevi), então, tentar usar isso como um benefício provavelmente me daria um "Huh?" tipo de aparência, e novamente não posso ser tão frouxo quanto gostaria sem ter que refazer vários módulos existentes e provavelmente introduzir algum tipo de contêiner de IoC, que seria visto como perda de tempo e não como "programação".
Alguém tem alguma sugestão sobre como eu posso apontar para este código e dizer "Devemos começar a criar testes de unidade" sem parecer condescendente (por exemplo, "Escrever testes obriga a escrever um bom código".) O que provavelmente seria considerado código exceto que o meu é ruim ) ou sem parecer uma perda de tempo que não agrega nenhum valor real?