Onde devo colocar o meu código de teste em relação ao código que está testando?

StackOverflow https://stackoverflow.com/questions/1882707

  •  19-09-2019
  •  | 
  •  

Pergunta

Os dois lugares óbvios que eu posso pensar seria uma espécie de pasta "teste" ao lado do código que eu estou trabalhando. Então, algo como:

\project-code
    \my-feature
        \production-code
        \testing
            ***my tests***
    \co-workers-feature
        \production-code
        \testing

Ou eu poderia dividir o código de teste uma hierarquia completamente separado. Então, algo como:

\project-code
    \my-feature
    \co-workers-feature
\testing-project-code
    \my-feature
        ***my tests***
    \co-workers-feature

Eu vi um monte de estruturas de usar a segunda abordagem, mas recentemente temos vindo a colocar nosso código de teste dentro do código de produção principalmente para conveniência. É uma abordagem muito melhor do que o outro ou se há uma melhor prática aqui?

Foi útil?

Solução

Eu uso a segunda opção. Isso significa que eu posso enviar o código sem os testes, se necessário. Também de olhar para a classe ou pacote que eu sei onde os testes de unidade para isso são.

Aqui está uma questão relacionada:

você colocar os testes de unidade na mesma projeto ou outro projeto?

Outras dicas

Coloque-os onde for mais conveniente para você. Você pode configurar o seu sistema de compilação para removê-los a partir do produto final, se desejado. O teste é uma "melhor prática". Tudo o que facilita o teste sem reduzir a sua eficácia é simplesmente melhorar em uma melhor prática.

Eu prefiro manter testes de unidade perto. Eu vi bem a opção 1 trabalho. Para um projeto pequeno, ambas as abordagens irá funcionar bem, mas como o projeto fica maior e maior, é mais difícil de encontrar e manter os testes quando eles vivem em uma parte muito diferente da árvore. Se eles estão perto, alterá-los será natural quando você altera o código do produto. Se eles estão longe, é preciso esforço mais mental e será ignorado mais. Isto significa que uma maior chance de que eles vão estar fora de sincronia.

Note que para fazer isso você precisa de um sistema de compilação que permite a compilação condicional dos diretórios de teste. Você não quer ter que construí-los o tempo todo. Se você não pode obter isso, uma árvore separada pode ser necessária.

Se seu site um que você controlar, então ele não ferir a ter tudo na mesma pasta. Se o seu software clássico que você soltar em seguida, ele tende a ser boa prática ter que separar, como no caso 2, para que você não acidentalmente causa qualquer inchaço quando você soltar.

Para mim, a primeira opção faz mais sentido, especialmente a partir de um ponto de SCM de vista: o código de produção e código de teste são muito bem mantidos em sincronia (como deveriam) e, se você tag ou ramificar seu projeto, você rótulo ou ramo produção e código de teste no mesmo tempo (como deveriam).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top