Devo usar o transferidor ou o karma para meus testes de ponta a ponta? [fechadas]

124

Devo usar o transferidor ou o karma para meus testes de ponta a ponta?

A Angular-seed está usando o Transferidor / Selenium WebDriver para E2E, mas o tutorial angular-phonecat usa karma.

Eu li que deveria usar Karma para testes de unidade e Transferidor para E2E, o que parece bom, mas pensei em pedir aqui para obter as opiniões de outros desenvolvedores.

screenm0nkey
fonte
1
Melhor ajuste para recomendações de software . Embora, se você postar essa pergunta, precisará elaborar quais são seus requisitos. Meta relacionada
Professor Allman
5
O Karma e o Transferidor são usados ​​e recomendados pela equipe Angular, mas, dado o estado da documentação (ou seja: há muito e é difícil saber o que está atualizado), é difícil saber qual usar e para qual finalidade. Essa é uma boa pergunta e a resposta da glpretre também era exatamente o que eu estava procurando.
Matt
5
Eu não acho que a pergunta fosse muito ampla (transferidor vs karma). Estamos falando de estruturas aqui, não apenas de algum software, então a questão está no lugar certo.
CCC
Veja minha resposta aqui para uma discussão mais detalhada de casos de uso, vantagens e limitações de Karma e transferidor: stackoverflow.com/a/29619467/1614973
Dmitri Zaitsev
Meu entendimento é que o Transferidor não permite testar apenas uma parte do seu aplicativo sem a presença do restante (por exemplo, zombaria): o código de teste nem está sendo executado no mesmo interpretador JS do aplicativo. Não há monitoramento do sistema de arquivos para modificações no código-fonte e reativação automática dos testes afetados. O karma fornece isso. Ele envia o código de teste + o código do aplicativo em <script> s para o navegador, para que sejam executados no mesmo intérprete, zombando possível, mas não foi projetado para testes de ponta a ponta com eventos nativos, como se um usuário real estivesse agindo.
robert4

Respostas:

179

A equipe do AngularJS recomenda o uso do transferidor para substituir o corredor angular do cenário:

O Angular Scenario Runner está no modo de manutenção - Se você estiver iniciando um novo projeto Angular, considere usar o Transferidor .

citado na documentação do AngularJs .

O tutorial angular-phonecat foi desenvolvido há muito tempo (principalmente em 2011) e ainda não foi atualizado para usar alguns novos recursos do Angular, como o Transferidor.

EDITAR

Nos Documentos do transferidor - Perguntas frequentes :

Por que tanto Karma e Transferidor? Quando uso qual?

O karma é uma ótima ferramenta para testes de unidade e o Transferidor é destinado a testes de ponta a ponta ou de integração. Isso significa que pequenos testes para a lógica de seus controladores, diretivas e serviços individuais devem ser executados usando o Karma. Grandes testes nos quais você tem uma instância em execução de todo o seu aplicativo devem ser executados usando o Transferidor. O Transferidor se destina a executar testes do ponto de vista do usuário - se o seu teste puder ser escrito como instruções para um ser humano interagir com seu aplicativo, deve ser um teste de ponta a ponta, escrito com o Transferidor.

Aqui está um ótimo post com mais informações.

glepretre
fonte
11
Das perguntas frequentes do Karma - karma-runner.github.io/0.10/intro/faq.html - Posso usar o Karma para fazer testes de ponta a ponta? O karma foi projetado principalmente para testes de baixo nível (unitário). Se for um aplicativo AngularJS, você poderá usar o Karma com o plug-in karma-ng-scenery, no entanto, recomendamos o Transferidor para testes de alto nível.
Mrwaim
Se eu quiser testes de unidade, bem como testes de e2e, tenho que configurar o ambiente de karma para testes de unidade e transferidor para testes de interface do usuário ou testes de e2e?
Sunil Garg
2
@SunilGarg Sim, você tem que, talvez nossa estrutura de aplicativo de partida poderia ajudá-lo: github.com/glepretre/angular-requirejs-ready (ignore RequireJS especificidades se você não usá-lo)
glepretre