JUnit - Usando Asserção

Afirmação

Todas as asserções estão na classe Assert.

public class Assert extends java.lang.Object

Esta classe fornece um conjunto de métodos de asserção, úteis para escrever testes. Apenas as afirmações com falha são registradas. Alguns dos métodos importantes da classe Assert são os seguintes -

Sr. Não. Métodos e Descrição
1

void assertEquals(boolean expected, boolean actual)

Verifica se dois primitivos / objetos são iguais.

2

void assertTrue(boolean condition)

Verifica se uma condição é verdadeira.

3

void assertFalse(boolean condition)

Verifica se uma condição é falsa.

4

void assertNotNull(Object object)

Verifica se um objeto não é nulo.

5

void assertNull(Object object)

Verifica se um objeto é nulo.

6

void assertSame(object1, object2)

O método assertSame () testa se duas referências de objeto apontam para o mesmo objeto.

7

void assertNotSame(object1, object2)

O método assertNotSame () testa se duas referências de objeto não apontam para o mesmo objeto.

8

void assertArrayEquals(expectedArray, resultArray);

O método assertArrayEquals () testará se dois arrays são iguais.

Vamos usar alguns dos métodos mencionados acima em um exemplo. Crie um arquivo de classe java chamadoTestAssertions.java em C: \> JUNIT_WORKSPACE.

import org.junit.Test;
import static org.junit.Assert.*;

public class TestAssertions {

   @Test
   public void testAssertions() {
      //test data
      String str1 = new String ("abc");
      String str2 = new String ("abc");
      String str3 = null;
      String str4 = "abc";
      String str5 = "abc";
		
      int val1 = 5;
      int val2 = 6;

      String[] expectedArray = {"one", "two", "three"};
      String[] resultArray =  {"one", "two", "three"};

      //Check that two objects are equal
      assertEquals(str1, str2);

      //Check that a condition is true
      assertTrue (val1 < val2);

      //Check that a condition is false
      assertFalse(val1 > val2);

      //Check that an object isn't null
      assertNotNull(str1);

      //Check that an object is null
      assertNull(str3);

      //Check if two object references point to the same object
      assertSame(str4,str5);

      //Check if two object references not point to the same object
      assertNotSame(str1,str3);

      //Check whether two arrays are equal to each other.
      assertArrayEquals(expectedArray, resultArray);
   }
}

Em seguida, crie um arquivo de classe java chamado TestRunner.java em C: \> JUNIT_WORKSPACE para executar caso (s) de teste.

import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public class TestRunner2 {
   public static void main(String[] args) {
      Result result = JUnitCore.runClasses(TestAssertions.class);
		
      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
		
      System.out.println(result.wasSuccessful());
   }
}

Compile o caso de teste e as classes Test Runner usando javac.

C:\JUNIT_WORKSPACE>javac TestAssertions.java TestRunner.java

Agora execute o Test Runner, que executará o caso de teste definido na classe Test Case fornecida.

C:\JUNIT_WORKSPACE>java TestRunner

Verifique a saída.

true

Anotação

As anotações são como metatags que você pode adicionar ao seu código e aplicá-las a métodos ou em classe. Essas anotações em JUnit fornecem as seguintes informações sobre métodos de teste -

  • quais métodos serão executados antes e depois dos métodos de teste.
  • quais métodos são executados antes e depois de todos os métodos e.
  • quais métodos ou classes serão ignorados durante a execução.

A tabela a seguir fornece uma lista de anotações e seu significado no JUnit -

Sr. Não. Anotação e descrição
1

@Test

A anotação Test informa ao JUnit que o método public void ao qual está anexado pode ser executado como um caso de teste.

2

@Before

Vários testes precisam de objetos semelhantes criados antes de serem executados. Anotar um método void público com @Before faz com que esse método seja executado antes de cada método de teste.

3

@After

Se você alocar recursos externos em um método Before, precisará liberá-los após a execução do teste. Anotar um método void público com @After faz com que esse método seja executado após o método Test.

4

@BeforeClass

Anotar um método void estático público com @BeforeClass faz com que ele seja executado uma vez antes de qualquer um dos métodos de teste na classe.

5

@AfterClass

Isso executará o método após a conclusão de todos os testes. Isso pode ser usado para realizar atividades de limpeza.

6

@Ignore

A anotação Ignorar é usada para ignorar o teste e esse teste não será executado.

Crie um arquivo de classe java chamado JunitAnnotation.java em C: \> JUNIT_WORKSPACE para testar a anotação.

import org.junit.After;
import org.junit.AfterClass;

import org.junit.Before;
import org.junit.BeforeClass;

import org.junit.Ignore;
import org.junit.Test;

public class JunitAnnotation {
	
   //execute before class
   @BeforeClass
   public static void beforeClass() {
      System.out.println("in before class");
   }

   //execute after class
   @AfterClass
   public static void  afterClass() {
      System.out.println("in after class");
   }

   //execute before test
   @Before
   public void before() {
      System.out.println("in before");
   }
	
   //execute after test
   @After
   public void after() {
      System.out.println("in after");
   }
	
   //test case
   @Test
   public void test() {
      System.out.println("in test");
   }
	
   //test case ignore and will not execute
   @Ignore
   public void ignoreTest() {
      System.out.println("in ignore test");
   }
}

Em seguida, crie um arquivo de classe java chamado TestRunner.java em C: \> JUNIT_WORKSPACE para executar anotações.

import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public class TestRunner {
   public static void main(String[] args) {
      Result result = JUnitCore.runClasses(JunitAnnotation.class);
		
      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
		
      System.out.println(result.wasSuccessful());
   }
}

Compile o caso de teste e as classes Test Runner usando javac.

C:\JUNIT_WORKSPACE>javac JunitAnnotation.java TestRunner.java

Agora execute o Test Runner, que executará o caso de teste definido na classe Test Case fornecida.

C:\JUNIT_WORKSPACE>java TestRunner

Verifique a saída.

in before class
in before
in test
in after
in after class
true