Pergunta

Estou apenas começando a fazer o desenvolvimento orientado a testes e estou me perguntando as principais diferenças entre Rhinomock, Typemock e a zombaria embutida de Nunit?

Qualquer informação seria muito apreciada!

Foi útil?

Solução

O TypeMock é um produto comercial (o que significa que você terá que pagar por ele), mas permitirá que você zombe de objetos concretos - ao contrário de Rhinomocks/Nunit/MOQ, que só podem zombar de uma classe de interface/abstração. Como isso alcança isso é a magia negra limítrofe, mas faz algumas coisas muito inteligentes com o CLR.

Isso pode ser particularmente útil quando você usa bibliotecas em seu projeto que não usam muitas interfaces. Assim, você pode, por exemplo, usar o TypeMock para zombar de um linqtosql datacontext ou objetos do SharePoint. No entanto, se você estiver usando o TypeMock, isso é Sem desculpa para design ruim em seu aplicativo.

Até onde eu sei, além de pequenas diferenças de sintaxe, a maioria das estruturas de zombaria se afastou do modelo antigo de registro/reprodução. Geralmente, você configura suas zombarias escrevendo expectativas usando uma interface fluente.

Pessoalmente, eu só usei o MOQ e eu <3.

Outras dicas

Um vídeo chamado TDD - Compreendendo objetos simulados Por Roy Osherove é muito útil para aprender as diferenças das diferentes bibliotecas de zombaria. Ele não tem detalhes em todos os aspectos, mas o suficiente para você entender. Eu espero que isso ajude. Roy também é o arquiteto -chefe da TypeMock e é uma figura muito influente na arena de testes de unidade. Eu não poderia recomendar este vídeo o suficiente para alguém que deseja aprender a usar zombar e também aprender sobre os disponíveis da biblioteca.

A principal diferença entre o TypeMock e a biblioteca de código aberto é que o TypeMock usa a API Profiler fornecida pela Microsoft em vez de um proxy dinâmico. Isso permite que o TypeMock zombe de classes de concreto e métodos estáticos. Caso você não tenha certeza do que é o Profiler, é a mesma API usada por ferramentas como o JetBrain's Dottrace e o Redgate's Forms .NET Profilers. O TypeMock apenas usa a API de uma maneira diferente para fingir (zombar) do que você diz.

@Richardod, obrigado pelo lembrete, seu livro "A arte dos testes de unidade"entra em mais detalhes onde o vídeo não. Eu possuo o livro e é muito informativo.

  • O Rhino.mocks é uma estrutura de código aberto, desenvolvido continuamente e melhorando por um dos desenvolvedores mais prolíficos do setor. Já existe há algum tempo e, portanto, apoia alguns paradigmas diferentes para zombar. Pode ser um pouco mais difícil de aprender, portanto, no sentido de encontrar tutoriais para a maneira "antiga" de fazer as coisas. Aqui vai uma dica, SetUpresultfor () e Espera.call () são as maneiras antigas de fazer as coisas. A nova maneira é MockObject.assertwascalled ().

Eu não tive nenhuma experiência pessoal com esses outros, mas ...

  • O MOQ é uma estrutura de código aberto, desenvolvido e melhorando continuamente por um dos desenvolvedores um pouco menos prolíficos da indústria (em comparação com Ayende). É mais novo e, portanto, carece de alguns recursos que o rinoceronte.Mocks possui. Isso geralmente não é um problema, pois esses recursos tendem a ser aqueles que são um pouco precedidos no rinoceronte. Ouvi dizer que, por causa disso, é um pouco mais fácil de aprender (as estruturas zombeteiras não são difíceis de aprender a propósito).
  • Nunit Mocks é muito singular no que diz respeito a zombarias. Ele não suporta a sintaxe Arrange-Att-ACT atualmente preferida, dependendo do Expect-Verify (registro/reprodução). Ele também depende de strings para identificar nomes de método e propriedades em vez de lambdas. Isso torna significativamente resistente à refatoração. Esse é um problema sério. Eu não recomendaria.
  • O TypeMock Isolater é uma estrutura de zombaria de uma empresa (de propriedade de?) Roy Osherove - um cara que conhece seus testes, mas também tem algumas opiniões levemente controversas sobre como aplicá -lo. É realmente intenso quanto ao que pode fazer - descer ao nível baixo e modificar como os objetos CLR funcionam. A filosofia por trás do Typemock não é realmente 100% TDD. Parte dos benefícios do TDD é que, ao abraçar as limitações das estruturas de zombaria, você projetará melhor código. O tipo de tipo de tipo explode essas limitações em pedaços. Até onde eu sei, é usado principalmente por pessoas que estão tentando obter código, elas não têm controle em teste.

Eu uso o TypeMock o tempo todo e achei uma ferramenta muito poderosa que pode melhorar a cobertura dos meus testes de unidade. Isso ocorre porque trabalho com o SharePoint e apenas o TypeMock pode me permitir zombar das aulas do SharePoint - uma vez que são classes concretas e não interfaces.

Malitar as classes do SharePoint não é possível com Rhinomock, MOQ, Frenheira, etc. Como (acredito) eles exigem interfaces para zombar de objetos, em vez de poder zombar das classes concretas reais.

Se o seu código usar muitas interfaces e você não precisar de classes de concreto zombeteiras, o TypeMock é um pouco caro, mas para a energia que você recebe, vale a pena.

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