JUnit - Tensho97/Aprende-a-Aprender GitHub Wiki

¿Qué es?

Es un conjunto de librerías que permiten hacer pruebas unitarias sobre aplicaciones JAVA.

Los JUnit cuentan con las siguientes anotaciones:

@Test

Esta anotación es simplemente para identificar que el método será un método para testear.

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

public class PersonaTest {
  
 @Test
 public void testNullNombrePersona(){
 
  Integer resultado = 2+2;
  Assert.assertNotNull(resultado);
 }
}

@Test(timeout)

Esta anotación indica que si el método tarda más del tiempo establecido, el test debe fallar.

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class PersonaTest {
 
 @Test(timeout=100)
 public void testNullNombrePersona(){
         Integer i = 0;
  while(1000000000 > i){
   i ++;
  }
  System.out.println("Termino");
 } 
}

@Test(expected)

Indica que el método debe lanzar algún tipo de exception.

import org.junit.Test;

public class PersonaTest {

 @Test(expected = Exception.class)
 public void testExcepcion(){
  Integer.parseInt("b"); 
 }  
}

@Ignore

Sirve para avisar al Junit que ignore ese método. Esta anotación se suele utilizar cuando estamos trabajando sobre el test.

import org.junit.Test;

public class PersonaTest {
        @Ignore("Todavía falta implementarlo.")
 @Test(expected = Exception.class)
 public void testExcepcion(){
  Integer.parseInt("b"); 
 }  
}

@Before - @After

Before –> indica que se ejecutará antes de cada método

After –> indica que se ejecutará despues de cada método

Tenemos que tener en cuenta que se ejecutarán tantos Before como After por cada @Test que tengamos.

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

/**
 * @author nconde
 */
public class PersonaTest {
  
 @Before
 public void antes(){
  System.out.println("Inicia test");
 } 
 @After
 public void despues(){
  System.out.println("Finaliza test");
 }
 
 @Test
 public void testNullNombrePersona(){
 
  Integer resultado = 2+2;
  Assert.assertNotNull(resultado);
 }
  
 @Test
 public void testNull(){
 
  Integer resultado = 2+2;
  Assert.assertNotNull(resultado);
 }
 
}

Al tener dos métodos (testNullNombrePersona y testNull) el método definido en el After y Before se ejecutará dos veces.

@BeforeClass - @AfterClass

Indica que se ejecutarán una única vez antes y después de todos los métodos

BeforeClass --> Antes de todos los métodos

AfterClass --> Después de todos los métodos

import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;


public class PersonaTest {
 
 @BeforeClass
 public static void antesAll(){
  System.out.println("Inicio test principal.");
 }
 
 @AfterClass
 public static void despuesAll(){
  System.out.println("Fin test principal.");
 }
 
        @Test
 public void testUno(){
             Assert.assertTrue(true);
 }
    
        @Test
 public void testDos(){
             Assert.assertTrue(true);
 }
  
}

Si bien tenemos mas de un método a testear las funciones antesAll y despuesAll se ejecutarán una sola vez.

@RunWith

Se utiliza para indicar que dicha clase se ejecutará como una extensión o tipo de otra clase.

import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.class)

public class TestSuite {
}

@Suite.SuiteClasses

Indica que un Test suite ejecutará los siguientes Test.

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import ar.com.ladooscurojava.model.test.PerroTest;
import ar.com.ladooscurojava.model.test.PersonaTest;

@RunWith(Suite.class)
@Suite.SuiteClasses({
        PerroTest.class,
        PersonaTest.class})

public class TestSuite {

}

Relacionado



Autor: Julián