Pergunta

Estou curioso sobre quantos de vocês pessoas incorporam zombando de objetos (frameworks como JMock, NMock, RhinoMocks lado a lado com estruturas de teste de unidade) em seu processo de desenvolvimento diário. Quais são suas experiências?

Você vê, eu desenvolver em cima de uma plataforma GIS (Sistemas de Informação Geográfica), em que a maior parte pertence de trabalho para alguma forma de manipulação de dados. Como seu modelo de objeto de dados é bastante complexos (muitos classes e interfaces, todos baseados em COM), também é bastante difícil e complicado para zombar. Neste caso, zombando incorre em uma grande sobrecarga ao escrever conjuntos de testes. Gostaria de saber se há pessoas em situação semelhante, ou apenas, como é que zombando (em qualquer situação em que está) trabalho para você.

Foi útil?

Solução

Em um projeto recente que eu trabalhei em que usamos objetos mock extensivamente em nossa abordagem de testes de unidade. O projecto foi de 100% de Java e de tamanho moderado (cerca de 100.000 linhas de código não comentaram). Foi um aplicativo de desktop baseado em Swing - ea única forma eficaz que encontramos para testar a lógica de interface do usuário foi através de um design variante MVC que nos permitiu usar objetos mock para substituir as classes reais de interface de usuário do balanço para o teste automatizado. Nós também utilizado zombando extensivamente no teste da camada de acesso de dados (hibernação / DAOs).

No uso inteface do usuário, os Mocks eram fáceis e simples de construção. E o design da aplicação (Fowler Passive View) incorporadas facilmente simulações. Este não foi o caso para as simulações utilizados para testar a camada de acesso a dados. Mas posso dizer que foi claramente vale o esforço. Na verdade, a maior parte do 'esforço' realmente focado em chegar com uma solução reutilizável que minimizou o trabalho que um desenvolvedor tinha que fazer para criar cada simulação individual. Eu recomendo tomar o tempo para cavar e descobrir uma abordagem para a sua situação que lhe permite zombar facilmente acima de sua camada de dados GIS. Que - ou apenas zombar manualmente cada classe. De qualquer forma, a capacidade de executar os testes de unidade automatizados que contam com as simulações vale a pena ...

Outras dicas

Na minha situação simulações trabalho muito bom. Mas eu estou usando Python, que é tão dinâmico que faz muitas coisas que envolvem testes muito, muito mais fácil.

Em situação como a sua, quando a aplicação é principalmente Data-Driven (tanto quanto eu vejo), simulações pode não ser tão útil. Apenas passando dados e vê-lo sair deve ser o suficiente para testar. Gostaria apenas de certificar-se de que a aplicação é suficiente modularizado , pelo que esta abordagem pode ser aplicada a razoavelmente pequenos componentes.

Mocking pode ser útil em algum tipo de projeto. Mas, às vezes zombando é muito demorado e o ROI do que é baixo.

tentando testar Sharepoint parece que zombador é o único caminho, e só typemock vai deixar você zombar aulas selado.

Mocking é usado extensivamente no meu caso. Simulações são geralmente para as classes que possui dependências externos, v.g. rede, banco de dados, sistema de arquivos. Qualquer um destes pode apresentar descamação nos testes se simulações não são utilizados.

Se as simulações que você acha caro para gravação porque há um monte de dados falsos para preencher, você pode definir alguns objetos de dados pré-preenchidos como constantes e usá-los ou ligeiramente modificada de cópias em seu teste. Se tais objetos de dados tem dependências externas, então talvez refatorar-lo de uma maneira que você pode separar as duas preocupações.

Não é uma iniciativa iniciada por Dave Bouman para tentar construir uma biblioteca comunitária de Mocks para uso em ArcObjects relacionados testes unitários. Seu blog e este repositório SVN têm grande informação relacionada com sistemas de teste de unidade GIS

http://blog.davebouwman.net/CategoryView,category,Unit % 2BTesting.aspx

http://svn2.assembla.com/svn/arcdeveloper/TestingUtilities/ trunk /

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