JUnit: uso de aserción

Afirmación

Todas las aserciones están en la clase Assert.

public class Assert extends java.lang.Object

Esta clase proporciona un conjunto de métodos de afirmación, útiles para escribir pruebas. Solo se registran las afirmaciones fallidas. Algunos de los métodos importantes de la clase Assert son los siguientes:

No Señor. Métodos y descripción
1

void assertEquals(boolean expected, boolean actual)

Comprueba que dos primitivas / objetos sean iguales.

2

void assertTrue(boolean condition)

Comprueba que una condición sea verdadera.

3

void assertFalse(boolean condition)

Comprueba que una condición sea falsa.

4

void assertNotNull(Object object)

Comprueba que un objeto no sea nulo.

5

void assertNull(Object object)

Comprueba que un objeto sea nulo.

6

void assertSame(object1, object2)

El método assertSame () prueba si dos referencias de objeto apuntan al mismo objeto.

7

void assertNotSame(object1, object2)

El método assertNotSame () prueba si dos referencias de objeto no apuntan al mismo objeto.

8

void assertArrayEquals(expectedArray, resultArray);

El método assertArrayEquals () probará si dos matrices son iguales entre sí.

Usemos algunos de los métodos mencionados anteriormente en un ejemplo. Cree un archivo de clase java llamadoTestAssertions.java en 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);
   }
}

A continuación, cree un archivo de clase Java llamado TestRunner.java en C: \> JUNIT_WORKSPACE para ejecutar caso (s) de prueba.

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 las clases Test case y Test Runner usando javac.

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

Ahora ejecute Test Runner, que ejecutará el caso de prueba definido en la clase de Caso de prueba proporcionada.

C:\JUNIT_WORKSPACE>java TestRunner

Verifique la salida.

true

Anotación

Las anotaciones son como metaetiquetas que puede agregar a su código y aplicarlas a métodos o en clase. Estas anotaciones en JUnit proporcionan la siguiente información sobre los métodos de prueba:

  • qué métodos se ejecutarán antes y después de los métodos de prueba.
  • qué métodos se ejecutan antes y después de todos los métodos, y.
  • qué métodos o clases se ignorarán durante la ejecución.

La siguiente tabla proporciona una lista de anotaciones y su significado en JUnit:

No Señor. Anotación y descripción
1

@Test

La anotación Test le dice a JUnit que el método public void al que está adjunto se puede ejecutar como un caso de prueba.

2

@Before

Varias pruebas necesitan objetos similares creados antes de que puedan ejecutarse. Anotar un método vacío público con @Before hace que ese método se ejecute antes de cada método de prueba.

3

@After

Si asigna recursos externos en un método Before, debe liberarlos después de que se ejecute la prueba. Anotar un método de vacío público con @After hace que ese método se ejecute después del método de prueba.

4

@BeforeClass

Anotar un método void estático público con @BeforeClass hace que se ejecute una vez antes que cualquiera de los métodos de prueba de la clase.

5

@AfterClass

Esto ejecutará el método después de que hayan finalizado todas las pruebas. Esto se puede utilizar para realizar actividades de limpieza.

6

@Ignore

La anotación Ignorar se utiliza para ignorar la prueba y esa prueba no se ejecutará.

Cree un archivo de clase java llamado JunitAnnotation.java en C: \> JUNIT_WORKSPACE para probar la anotación.

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");
   }
}

A continuación, cree un archivo de clase Java llamado TestRunner.java en C: \> JUNIT_WORKSPACE para ejecutar anotaciones.

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 las clases Test case y Test Runner usando javac.

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

Ahora ejecute Test Runner, que ejecutará el caso de prueba definido en la clase de Caso de prueba proporcionada.

C:\JUNIT_WORKSPACE>java TestRunner

Verifique la salida.

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