Digamos que eu queria iniciar um projeto de código aberto que espero / espero que muitas pessoas enviem patches e outros enfeites. É viável adotar uma abordagem estrita de TDD? Posso / devo esperar / confiar que os colaboradores escrevam testes de qualidade sempre que enviam um patch?
Uma coisa que eu tenho pensado é escrever suítes de teste para relatórios individuais de bugs e solicitações de recursos e exigir que todas as solicitações de patches / pull façam os testes passarem, mas nesse momento parece que seria melhor apenas escrever o recurso / correção de bugs Eu mesmo.
Até onde eu sei, a maioria dos principais projetos de código aberto que usam TDD (ou pelo menos testes de gravação) parecem ser escritos exclusivamente por um indivíduo ou equipe, onde é fácil aplicar práticas como o TDD.
fonte
Respostas:
Você não pode realmente aplicar uma abordagem TDD (teste primeiro) em um projeto de código aberto, onde os patches podem ser enviados pelo público em geral.
O que você pode aplicar é que todos os patches devem ter um conjunto de casos de teste para as correções incluídas no patch e que esses casos de teste, bem como todos os casos de teste existentes, devem passar. Você pode impor isso concedendo apenas direitos de confirmação a alguns desenvolvedores confiáveis conhecidos por usar e concordar com as políticas do projeto e afirmando publicamente que envios / solicitações pull serão incorporados apenas se eles forem aprovados em casos de teste (com cobertura suficiente).
Isso não garante que o teste seja escrito primeiro , mas garante que o teste seja escrito .
fonte
Você pode pedir às pessoas que enviem correções somente para teste antes de poderem trabalhar no código; isso proporcionaria uma oportunidade adicional de revisar o design planejado antes que o próprio código fosse gravado.
Na prática, isso pode matar qualquer entusiasmo que as pessoas têm por contribuir com o projeto - ou pode acender um fogo naqueles que concordam com sua metodologia.
Os revisores teriam que ser muito bons em rever rapidamente as revisões de design, para não atrapalhar o desenvolvimento.
fonte