Tanto o Testng quanto o Junit são frameworks de teste usados para testes de unidade. TestNG é semelhante ao JUnit. Poucas funcionalidades adicionais são adicionadas a ele, o que torna o TestNG mais poderoso do que o JUnit.
Este tutorial é voltado principalmente para analisar recursos de JUnit e TestNG. Ajuda os desenvolvedores a decidir qual estrutura deve ser usada para testes de unidade. Vamos analisar as semelhanças entre TestNG e JUnit4 primeiro.
TestNG é uma estrutura de teste inspirada em JUnit e NUnit.
Aqui está a tabela que mostra os recursos suportados por JUnit e TestNG.
Comparação de recursos JUnit4 e TestNG
Ambos TestNG e JUnit4 parecem semelhantes, exceto um ou dois recursos. Vamos fazer uma comparação entre os dois para decidir rapidamente qual tecnologia é mais favorável para o Teste de Unidade. A tabela abaixo destaca os recursos suportados por ambos:
Anotações
Tanto o JUnit quanto o TestNG usam anotações e quase todas as anotações parecem semelhantes.
TestNG usa @BeforeMethod, @ AfterMethod semelhante a @Before, @ After em JUnit4.
Ambos TestNG e Junit4 usam @Test (tempo limite = 1000) para tempo limite. Verifique a tabela abaixo para mais detalhes-
SN | Descrição | TestNG | JUnit 4 |
---|---|---|---|
1 | Anotação de teste | @Teste | @Teste |
2 | É executado antes que o primeiro método de teste seja invocado na classe atual | @Antes da aula | @Antes da aula |
3 | Executa após todos os métodos de teste na classe atual | @Depois da aula | @Depois da aula |
4 | Executa antes de cada método de teste | @BeforeMethod | @Antes |
5 | Executa após cada método de teste | @AfterMethod | @Depois de |
6 | anotação para ignorar um teste | @Test (ativar = falso) | @ignorar |
7 | anotação para exceção | @Test (expectedExceptions = ArithmeticException.class) | @Test (esperado = ArithmeticException.class) |
8 | tempo esgotado | @Test (tempo limite = 1000) | @Test (tempo limite = 1000) |
9 | Executa antes de todos os testes no pacote | @BeforeSuite | n / D |
10 | Executa após todos os testes no pacote | @AfterSuite | n / D |
11 | Executa antes de um teste ser executado | @BeforeTest | n / D |
12 | Executa após a execução de um teste | @AfterTest | n / D |
13 | É executado antes que o primeiro método de teste que pertença a qualquer um desses grupos seja invocado | @BeforeGroups | n / D |
14 | executado após o último método de teste que pertence a qualquer um dos grupos aqui | @AfterGroups | n / D |
Suite Teste
As suítes são usadas para executar vários testes juntos. As suítes podem ser criadas usando TestNG e JUnit4. No entanto, as suítes são mais poderosas no TestNG, pois ele usa um método muito diferente para a execução de testes. Vamos entender isso usando o snippet de código conforme fornecido abaixo:
Usando JUnit4
A classe abaixo descreve o uso do pacote ao trabalhar com JUnit4:
package guru99.junit;import org.junit.runner.RunWith;import org.junit.runners.Suite;@RunWith (Suite.class)@ Suite.SuiteClasses ({SuiteTest1.class,SuiteTest2.class,})public class JunitTest {// Esta classe permanece vazia, ela é usada apenas como suporte para as anotações acima}
Usando TestNG
TestNG usa xml para agrupar todos os testes em um lugar. O xml abaixo descreve o uso do pacote ao trabalhar com TestNG:
Ignorar Teste
Usando ambos, podemos pular um teste. Vamos vê-lo usando o exemplo de código fornecido a seguir:
Usando JUnit4
O snippet de código abaixo descreve o uso da anotação @ignore ao trabalhar com JUnit4:
@Ignorarpublic void method1 (){System.out.println ("Usando @Ignore, esta execução é ignorada");}
Usando TestNG
O snippet de código abaixo descreve o uso da anotação @Test (enabled = false) ao trabalhar com TestNG:
@Test (ativado = falso)public void TestWithException (){System.out.println ("O método deve ser ignorado, pois ainda não está pronto");}
Teste de Exceção
O teste de exceção está disponível em TestNG e JUnit4. Ele é usado para verificar, qual exceção é lançada no teste?
Usando JUnit4
O snippet de código abaixo descreve o uso do teste de exceção ao trabalhar com JUnit4:
@Test (esperado = ArithmeticException.class)public void divideByZero (){Int i = 1/0;}
Usando TestNG
O snippet de código abaixo descreve o uso do teste de exceção ao trabalhar com TestNG:
@Test (expectedExceptions = ArithmeticException.class)public void divideByZero (){Int i = 1/0;}
Tempo esgotado
Este recurso é implementado em TestNg e JUnit4.Timeout é usado para encerrar um teste que leva mais tempo do que o especificado (em milissegundos).
Usando JUnit4
O snippet de código abaixo descreve o uso do teste de tempo limite ao trabalhar com JUnit4:
@Test (tempo limite = 1000)public void method1 (){enquanto (verdadeiro);}
Usando TestNG
O snippet de código abaixo descreve o uso do teste de tempo limite ao trabalhar com TestNG:
@Test (timeOut = 1000)public void method1 (){enquanto (verdadeiro);}
Teste Parametrizado
JUnit fornece uma abordagem mais fácil e legível para teste conhecido como teste parametrizado. Tanto TestNG quanto JUnit oferecem suporte a testes parametrizados, mas diferem na maneira como definem o valor do parâmetro. Vamos ver um por um.
Usando JUnit4
As anotações "@RunWith" e "@Parameter" são usadas para fornecer o valor do parâmetro para o teste de unidade. A anotação @Parameters deve retornar List []. Este parâmetro será passado para o construtor da classe como um argumento.
@RunWith (value = Parameterized.class)public class JunitTest {número privateint;public JunitTest6 (número interno){this.number = número;}@Parametersdados public static Collection
Usando TestNG
Em TestNG, o arquivo XML ou "@DataProvider" é usado para fornecer um parâmetro para teste.
Aqui, a anotação @Parameters declarada no método, precisa de um parâmetro para teste. Os dados usados como parâmetro serão fornecidos nos arquivos de configuração XML do TestNG. Fazendo isso, podemos reutilizar um único caso de teste com conjuntos de dados diferentes e podemos obter resultados diferentes.
public class Test1 {@Teste@Parameters (value = "number")public void parameterTest (número int){System.out.println ("Número parametrizado é: + número);}}
Veja abaixo o arquivo xml a ser usado para a classe acima:
Resumo :
Vimos a comparação JUnit4 e TestNG em detalhes. Também vimos que ambos são semelhantes, exceto o teste parametrizado e o teste de dependência. Em suma, podemos dizer que, com base na flexibilidade e nos requisitos, podemos escolher qualquer um deles para o Teste Unitário.
- Próximo