Pergunta

Embora eu tenha programado com Java há cerca de 3 anos + agora (não diariamente, mas pelo menos eu entendo os fundamentos), não entrou no campo dos testes de unidade ...

Meu trabalho agora é mais orientado para a análise de testes / problemas, então acho que uma boa estrutura de teste de unidade Java será bastante útil para essa função.

Obviamente, não existe uma regra formal de qual estrutura ir na minha equipe. Então, apenas me perguntando como iniciante, qual estrutura é boa para começar rapidamente?

Junit?

Testng?

ou alguma outra coisa?

EDIT: Parece que Junit tem mais livros impressos como referências em comparação com o TestNG na Amazon. Mas não conheço sua popularidade / tendência na indústria de Java, como por enquanto.

Foi útil?

Solução

Sou o criador do Testng e autor do livro "Next Generation Testing", então aqui estão alguns pensamentos (obviamente tendenciosos).

Para testes funcionais (ou de ponta a seguir / integração / sistema, seja qual for o termo que você preferir), o TestNG oferece alguns recursos que o Junit não possui e que os usuários acharam muito útil:

  • Grupos. Depois de compilar seus testes, basta solicitar que a Testng execute todos os testes "front-end" ou "rápido", "lento", "banco de dados", etc ...

  • Suporte para testes multithread. Isso tem dois significados diferentes:

1) Você pode dizer ao teste para executar todos os seus testes simultaneamente em pools de threads que você define (alteração de uma linha em um arquivo XML). Isso é muito configurável para que os testes que não sejam multithreads ainda possam ser executados em threads únicos.

2) Você pode dizer ao teste para invocar seus métodos de teste n vezes a partir de threads P. Isso oferece uma boa idéia de como o tópico é seguro o código que você está testando.

  • Teste dependências e ordem determinística. Isso é muito útil para testes de integração, onde é muito comum ver métodos de teste que precisam de métodos de teste anteriores para ter sucesso antes que possam ser executados. O teste é muito popular na comunidade de selênio por esse motivo específico ("Não se preocupe em testar esta página do meu site se o teste de login falhar").

Outra vantagem imediata das dependências do teste é que o teste pode dizer "1 método falhou, 99 métodos ignorados", o que é um resultado muito mais preciso do que "100 métodos falhados".

Testng tem muitos, muitos outros recursos e fico feliz em responder a perguntas aqui ou em nossa lista de correspondência (http://groups.google.com/group/testng-users ).

Outras dicas

Eu aprenderia testando com Unidades. Cobriu todas as minhas necessidades o tempo todo. Adicione xmlunit e dbunit e você deve ficar resolvido por um longo tempo.

Para ser perfeitamente honesto, eu é muito mais popular que o teste, pelo menos aqui onde eu trabalho e vivo. Eu sei que isso pode ser um argumento estranho, mas se eu fosse você, examinaria um trabalho adicionado e ver qual estrutura faz a indústria em sua área/país a favor (por exemplo, estou indo para o Junit por causa disso, quero dizer Claro que eu poderia aprender testng, pode ser melhor, mas que bem isso faria comigo se todos os empregadores exigissem conhecimento da Junit?).

Embora possa parecer um critério mesquinho, todas as coisas são iguais, parece que as tendências do trabalho favorecem fortemente Junit.

http://www.indeed.com/jobtrends?q=testng%2C+Junit&l=

Ambos fazem seus trabalhos igualmente bem, então não há direito ou errado. Você pode usar os dois em combinação com inúmeras estruturas para ajudar a apoiar seu desenvolvimento.

Se você precisar trabalhar para um cliente, pode aprender o que você deve usar. Caso contrário, a melhor idéia é experimentá -los e descobrir o que funciona melhor para você.

Eu usei os dois e descobri que, para testes de unidade, apenas o JUNIT funciona muito bem, mas em termos de teste do sistema eu recomendaria o TestNG. O Testng oferece alguns recursos extras (como testes paramétricos) e é altamente flexível. Por exemplo, no Junit One Teste, falhando em uma suíte, geralmente significa que você precisa executar novamente toda a sua suíte, mas no teste, você pode simplesmente executar novamente o teste que falhou. Aqui está um artigo muito bom descrevendo os dois (é um pouco tendencioso para testar)

http://www.ibm.com/developerworks/java/library/j-cq08296/index.html

Junit é muito bem apoiado em muitos IDEs, incluindo Eclipse, e o Junit 4 com anotações é muito bom de se trabalhar.

A menos que você tenha necessidades específicas, opte por suporte à ferramenta, ou seja, Junit.

Testar com unidades é realmente ótimo. Ele abrange quase todos os requisitos. As unidades suportam muitos utilitários de afirmação, primavera, hibernação, estruturas de zombaria, dbutils etc.

Para mim, é apenas uma questão de gosto. Eu, pessoalmente, usei o Junit diariamente há mais de 5 anos e estou muito feliz com isso, especialmente com a última versão e seu recurso @Rule que impede que minha equipe coloque o mesmo código repetidamente. Ele se integra bem a todas as ferramentas que eu uso diariamente: IDE, construção, intégração contínua ...

Junit é famoso e as melhores ferramentas de teste de unidade, acho que você e eu sabemos que o JUNIT é tão importante que o desenvolvedor Java altere seu padrão de codificação como contribuição do JUNIT, você pode aprender alguma Junit como tecnologia básica de teste de unidade, além de aprender testng como segunda unidade Tecnologia de teste.

O link a seguir talvez seja útil para você!http://www.javarmi.com/2010/08/junit-4-tutorial-and-example-get-start/

Junit é o melhor lugar para começar. O JUNIT 4.X tem muitos recursos ricos, como anotações etc., também, obtém um bom apoio de estruturas populares como a primavera.

Eu iria para Junit.

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