Onde você coloca seu teste de unidade?

Encontrei várias convenções para testes de unidade de limpeza em um projeto e não tenho certeza de qual abordagem seria adequada para o nosso próximo projeto PHP. Estou tentando encontrar a melhor convenção para incentivar o fácil desenvolvimento e acessibilidade dos testes ao revisar o código-fonte. Eu ficaria muito interessado em sua experiência / opinião sobre cada um:

Uma pasta para código produtivo, outra para testes de unidade: separa os testes de unidade dos arquivos lógicos do projeto. Essa separação de preocupações é tão incômoda quanto vantajosa: alguém que olha o código-fonte do projeto - então eu suponho - navega na implementação ou nos testes de unidade (ou mais comumente: apenas na implementação). A vantagem de os testes de unidade serem outro ponto de vista para suas classes é perdida - esses dois pontos de vista estão muito distantes do IMO.Métodos de teste anotados: qualquer estrutura de teste de unidade moderna que conheço permite que os desenvolvedores criem métodos de teste dedicados, anotando-os (@teste) e incorporá-los no código do projeto. A grande desvantagem que vejo aqui é que os arquivos do projeto ficam confusos. Mesmo que esses métodos sejam separados usando um cabeçalho de comentário (comoTESTES DE UNIDADES abaixo desta linha) apenas incha a classe desnecessariamente.Arquivos de teste nas mesmas pastas que os arquivos de implementação: Nossa convenção de nomenclatura de arquivos determina que os arquivos PHP que contêm classes (uma classe por arquivo) devem terminar com.class.php. Eu poderia imaginar que colocar testes de unidade em relação a um arquivo de classe em outro terminando em.test.php tornaria os testes muito mais presentes a outros desenvolvedores sem manchar a classe. Embora incha as pastas do projeto, em vez dos arquivos de implementação, este é o meu favorito até agora, mas tenho minhas dúvidas: acho que outros já sugeriram isso e descartaram essa opção por algum motivo (ou seja, não vi um projeto Java com os arquivosFoo.java eFooTest.java na mesma pasta.) Talvez seja porque os desenvolvedores de java façam uso mais intenso de IDEs que permitam um acesso mais fácil aos testes, enquanto no PHP nenhum grande editor surgiu (como o eclipse para java) - muitos desenvolvedores que conheço usam vim / emacs ou similar editores com pouco suporte para o desenvolvimento do PHP em si.

Qual é a sua experiência com qualquer uma dessas veiculações de teste de unidade? Você tem outra convenção que não listei aqui? Ou estou apenas substituindo a acessibilidade do teste de unidade pelos revisores?

questionAnswers(3)

yourAnswerToTheQuestion