Pergunta

Eu só estava me perguntando se alguém vê apenas testes de integração como apenas um teste de unidade especial. Tenho, no entanto, ouviu de outros programadores que é uma boa idéia para separar os testes de unidade e teste de integração. Fiquei me perguntando se alguém poderia explicar por que isso é uma boa idéia. Que tipos de vantagens haveria para o tratamento de testes de integração e de unidade como completamente diferente? Por exemplo, tenho visto pastas e pacotes separados para testes de integração e testes de unidade. Eu seria da opinião de que um único pacote de teste contendo ambos os testes unitários e testes de integração seria suficiente, pois ambos são basicamente o mesmo conceito.

Foi útil?

Solução

eu os vejo como diferente pelo seguinte motivo.

  • Os testes de unidade pode ser realizada em uma única classe / módulo no ambiente do desenvolvedor.
  • Testes de integração deve ser realizado em um ambiente que lembra a configuração de produção real.

Os testes de unidade são mantidos deliberadamente "leve" para que o desenvolvedor pode executá-los sempre que necessário com um custo mínimo.

Outras dicas

A velocidade é a principal razão. Você quer que seus testes de unidade para ser o mais rápido possível para que você possa executá-los o mais rápido possível. Você deve ainda executar os testes de integração, mas executá-los uma vez antes de um check-in deve ser suficiente IMO. A suíte de teste de unidade deve ser executado com muito mais frequência -. Idealmente com cada refatoração

Eu trabalho em um ambiente onde temos cerca de 15k testes JUnit com testes unitários e de integração completamente misturados. O conjunto completo leva cerca de meia hora para ser executado. Desenvolvedores evitar executá-lo e encontrar erros mais tarde do que deveriam. Às vezes, eles check-in depois de executar apenas um subconjunto dos testes e incluem um bug que quebra a construção contínua.

Inicie separando seus testes cedo. É muito difícil uma vez que você tem um grande conjunto.

Sim. Tipicamente, os testes de unidade são escopo no nível de classe, de modo que existem num ambiente em conjunto com objectos simulados. testes de integração, por outro lado, fazer todos os truques, mantendo referências à sua real montagem tipos.

Eu só não vejo como se poderia organizar ambos unidade e integração em um único projeto.

Se você limitar a noção de 'teste de unidade' para escopo no nível de classe, então sim, mantê-los separados

No entanto, se você definir o unidade testável relevante menor como recurso , em seguida, alguns dos seus testes de 'unidade' será tecnicamente 'integração' testes

a rehashing das várias definições / interpretações dos termos é, em grande parte, embora irrelevante, particionamento de seus conjuntos de teste deve ser uma função do âmbito das componentes que está sendo testado eo tempo necessário para realizar o teste.

Por exemplo, se todos os testes (unidade, integração, regressão, ou qualquer outro) aplicam-se contra um conjunto único e executar em poucos segundos, em seguida, mantê-los todos juntos. Mas se alguns de seus testes exigem seis máquinas instalação limpa em uma sub-rede, enquanto outros não, faz sentido separar o primeiro conjunto de testes a partir do último

resumo: a distinção de 'unidade' e testes de 'integração' é irrelevante; suites de teste do pacote com base no escopo operacional

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