Pergunta

O meu quadro principal JavaScript é jQuery então eu gostaria que o meu teste de unidade e zombando de quadros para ser compatível com isso. Eu prefiro não ter de introduzir uma outra estrutura JavaScript.

Atualmente, estou usando QUnit para testes de unidade e Jack para zombar, mas eu sou muito novo para toda a unidade de teste de JavaScript.

Alguém tem uma ferramenta melhor para sugerir? O que funcionou para você?

Foi útil?

Solução

QUnit
jQUnit
testes escrita JS com QUnit e jQUnit

QUnit é a unidade testar framework para o framework jQuery JavaScript. O framework de testes em si usa a biblioteca jQuery, mas os testes podem ser escrito para qualquer JavaScript e não requerem o código para usar jQuery. JQUnit é uma versão modificada do QUnit que adiciona nas funções de instalação, desmontagem, e afirmar que são mais típicas de um quadro xUnit e encapsula tudo em uma variável global.

A interface visual da página TestRunner é bom, o que lhe permite detalhar e ver cada assert em cada método de teste. Escrever testes é bastante fácil, e você pode executar o código de teste diretamente na página TestRunner [8]. Isso permite fácil e visível testes DOM.

QUnit: MIT ou GPL (escolher) jQUnit: MIT License

Pros
- Asynchronous apoio
- Bom para DOM testar
- Testes são sempre executados sequencialmente na ordem em que são adicionados a um conjunto
- Debug na página de teste usando firebug
- Sintaxe é semelhante ao JUnit se estiver usando JQUnit, mas simples de aprender, se utilizando QUnit
Contras
- Automação seria difícil de implementar

Outras dicas

Eu acho que Jack é a melhor plataforma de simulacros para JavaScript a partir do momento da redação deste texto. A principal razão é que o que é certo para JavaScript não é provável que é certo para uma linguagem fortemente digitado, como Java.

Muitos frameworks de zombaria JavaScript são inspiradas em Java estruturas simuladas (como o excelente JsMockito, por exemplo). Mas o problema com estes é que eles requerem injeção de dependência, porque isso é sobre a única maneira razoável usar zombando em Java. Mas, em JavaScript, existem muitas maneiras de usar zombando, e você não é forçada em usar injeção de dependência em todos os lugares.

Por exemplo, com JsMockito, você tem que fazer simulações e, em seguida, passar essas simulações em o seu software em teste (SUT). O SUT tem que chamar diretamente as simulações. Portanto, você é forçado a código do SUT como um construtor ou função que leva em todas as suas dependências como parâmetros. (Às vezes, isso é uma boa maneira de implementá-lo, mas não em todos os casos. A cauda é abanando o cachorro se do seu quadro zombando forças de design a sua abordagem de implementação).

Em JavaScript, é muito fácil de "sequestro" qualquer função. Portanto, há toneladas de maneiras de construir algo de tal forma que você pode zombar partes dele sem injetar explicitamente suas dependências para ele. Por exemplo, Jack permite zombar qualquer função, se é público ou em um objeto local. De lá você pode espiar nele, stub-lo, ou expressar expectativas sobre ele. O ponto-chave é esta: uma vez que você zombou de uma função, todas as chamadas para que função original, ao contrário, ser dirigidas ao seu simulada . Em outras palavras, suas simulações ainda vai se acostumar mesmo que a função original, zombou-un foi chamado. Como resultado, você não é obrigado a dependências injetar, embora certamente você pode fazê-lo nos casos que exigem-lo.

O JavaScript é uma linguagem diferente do Java (e C #, etc.) Ela permite a diferentes expressões de implementação. A injeção de dependência ainda é uma valiosa ferramenta na caixa de ferramentas em JavaScript, mas não é o único jogo na cidade mais. seus zombando necessidades estruturais para conhecer e respeitar esse fato. Jack e um par dos outros fazem, mas os que fazem, Jack parece ser o mais maduro e rico em funcionalidades.

Eu não tenho certeza por que ninguém tenha mencionado JsTestDriver ! Tem que ser a uma das únicas ferramentas JS Testing que realmente funcionam como se esperaria que se você tiver unidade usada ferramentas de teste em outros idiomas.

testes de corrida pode ser feito sem tocar um navegador, você pode integrá-lo com o IDE do, você pode integrá-lo com sistemas de integração contínua ... Oh, e é rápido, e pode executar testes em vários navegadores ao mesmo tempo.

Você também pode usar outras estruturas de teste como YUITest com ele, tornando-o ainda melhor.

YUI Teste
TDD Com YUI Teste

YUI teste é o framework de teste para a biblioteca de interface de usuário do Yahoo. Ele é usado por Yahoo para testar a sua própria biblioteca, e tem sintaxe semelhante a JUnit.

Como jsUnit, YUI teste vem com seu próprio console de registro que a informação de saída pode, avisos e erros, além dos resultados de cada teste.

YUI também fornece a capacidade de relatórios de envio sobre os resultados em quer JSON ou XML.

YUI teste é BSD licenciado.

Pros
- Realmente boa documentação
- Ativo comunidade
- lançamentos regulares
- Sintaxe é semelhante ao JUnit (conjuntos de testes, afirma e instalação / desmontagem)
- Asynchronous apoio
- Bom para DOM testar
- testes são sempre executados sequencialmente na ordem em que são adicionados a um conjunto

Contras
- Automação não trivial de implementar, mas menos difícil do que outros frameworks

Também confira http://sinonjs.org/

Test espia Teste stubs servidor Falso Mocks temporizadores Falso Falso XHR sandboxing Afirmações

Ele faz o trabalho junto com QUnit e que tem sido um plus até agora.

Esta é uma revisão boa bonita de zombando de quadros disponíveis de Javascript:

http://testdrivenwebsites.com/2010/05/ 06 / java-script-mock-estruturas de comparação

Estamos usando jsspec jsspec . É muito bom se você gosta rspec e BDD. Só vi um href="http://blog.thinkrelevance.com/2008/7/31/fully-headless-jsspec" artigo por Justin Gehtland em usá-lo "sem cabeça "também.

Para zombando em JavaScript dar uma olhada qMock , um quadro um colega e eu escrevi para complementar o nosso uso de QUnit. Embora este último é ótimo para testes de unidade, não permitir o teste muito eficaz lógica assíncrona / negócio. Nós havn't 'marcado' qualquer versão mais estável, mas há alguns docs decentes lá, e se você check-out do SVN você verá qmock si tem testes de unidade por trás dele que são bastante auto-explicativo.

Oh, e para automatizar os testes como parte da compilação foi utilizado um roteiro de selênio simples de navegar através do nosso testsuite (uma página de teste por arquivo JS), e 'ouviu' para uma aprovação ou reprovação classe CSS (adicionado por QUnit) . Isso sem cabeça funciona bem para o IE / FF2 AFAIK

Para o desenvolvimento mozilla, eu caio no amor com UXU , com base em MozUnit mas ainda ativo. Tem características interessantes como servidor simulada ou dormir / métodos Rendimento.

Eu uso a estrutura de teste Unidade Screw e eu escrevi o meu próprio biblioteca de zombaria chamada jsMocha que está em uso pesado no trabalho da empresa I a por mais de 6 meses.

Eu sei que você está pedindo estruturas JQuery-compatíveis, mas eu quero jogar script.aculo.us na mistura para a completude. Eles têm um teste de unidade suíte que não é ruim.

CrossCheck parecia extremamente poderoso quando eu olhei para ele, mas não tenho incorporado em nosso processo de construção neste momento. Tem a vantagem de ser browserless, e assim deve funcionar bem em um cenário de construir e teste automatizado.

http://thefrontside.net/crosscheck

Você poderia tentar HtmlUnit que teve um JQuery versão compatível mais de um ano atrás.

A vantagem de HtmlUnit é que ele não está dirigindo um navegador por isso é rápido.

A desvantagem é que ele não está dirigindo um navegador por isso há algumas JS coisas que não vai funcionar. Mas a compensação que eles podem executar os testes JQuery assim o apoio JS pode ser bom o suficiente para o que você precisa.

JsUnit é executado a partir de qualquer navegador, por meio de sua Eclipse plug-in, ou automaticamente através de um tarefa ANT. Você criar uma página HTML com um monte de funções de teste, que deve ser nomeado com o ‘teste’ prefixo, incluir o arquivo JS que você está testando. Quando qualquer assert dentro de uma função falhar, toda a função falha e pára a execução. Não há uma ordem garantida em que estes testes são executados. Você pode criar funções setup() e teardown().

Licença: GPL, GLPL, MPL

Pros

  • A automação é relativamente fácil de implementar
  • Um monte de funcionalidade
  • A sintaxe é semelhante ao JUnit

Contras

  • Não é excelente para testar DOM, uma vez que executa testes dentro de um iframe.
  • Não há garantia de que os testes serão executados na ordem em que são escritos.
  • Não é possível usar o Firebug na página TestRunner. Necessidade de ter uma outra aberta guia com o código de teste real.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top