Noções básicas sobre o conceito de teste de unidade

5

Acabei de começar a escrever testes de unidade e não tenho certeza se estou fazendo o "caminho certo". Devo testar todas as classes "removendo dependências"? Em outras palavras, o teste de unidade significa: "teste parte de um código com suposição de que as dependências fornecidas para outros módulos estão corretas e teste essas dependências como módulos únicos posteriormente em outras classes de teste de unidade"?

Por exemplo, escrevo a aplicação WinRT na maneira Model-View-ViewModel e tenho a classe MainViewModel. Esta classe tem dependência para IDataRepository que é injetado no construtor. MainViewModel é responsável por manipular comandos e conectar modelo com visualização. MainViewModel tem comandos como CopyItems , LoadData etc que estão confiando na implementação de IDataRepository .

Devo passar falso (simulado / falso?) IDataRepository em MainViewModel_Tests e testar apenas dados são carregados, copiados etc. na execução do comando? Um teste deve verificar apenas as coisas que a classe realmente faz - não quais são as dependências?

    
por fex 21.12.2013 / 23:12
fonte

1 resposta

7

Should I pass fake (mock/fake it??) IDataRepository in MainViewModel_Tests and test just is data loaded, copied etc. on command execution?

Sim. Tanto quanto possível, os testes de unidade devem testar uma única classe. Qualquer dependência que se conecte a qualquer fonte de dados fora do processo de teste deve ser ridicularizada. Isso inclui o estado do sistema local, como o relógio do sistema.

Should one test check just things what class really do - not what dependencies do?

Sim, caso contrário, seus testes ficarão muito frágeis. Uma alteração no comportamento de uma classe dependente pode exigir alterações em todos os testes que dependem dessa classe. Idealmente, cada comportamento é testado exatamente uma vez.

Claro que você ainda precisará fazer testes de integração.

    
por 21.12.2013 / 23:39
fonte