JUnit - Anotaciones / Annotation JUnit

Hace muy poco hablamos del JUnit para que servia, como instalarlo, como actualizarlo, etc. Hoy vamos a ver las Annotation o dicho en español las Anotaciones de JUnit.

Anotaciones/Annotacion JUnit

Al momento de escribir este tutorial la versión 4.x soporta la siguientes anotaciones:

  • @Before
  • @BeforeClass
  • @After
  • @AfterClass
  • @Test
  • @Ignore
  • @Test(timeout)
  • @Test(expected)
  • @RunWith
  • @Suite.SuiteClasses


@Test

La annotation @Test es simplemente para identificar que el método sera un método a testear.

Ejemplo:

package ar.com.ladooscurojava.model.test;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

/**
* @author nconde
*/
public class PersonaTest {

@Test
public void testNullNombrePersona(){

Integer resultado = 2+2;
Assert.assertNotNull(resultado);
}
}

@Test(timeout)

La annotation @Test(timeout) sirve para decirle a JUnit que si el método tarda mas del tiempo esperado el mismo tiene que fallar, esto es ideal para verificar procesos con demora aceptable. El tiempo se debe asignar en mili segundos. En el caso que el test no termine en el tiempo deseado sera marcado como fallido.

Ejemplo:

package ar.com.ladooscurojava.model.test;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

/**
* @author nconde
*/
public class PersonaTest {

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


El resultado sera fallido ya que obviamente para terminar el while va a tardar mucho mas que 100 mili segundos.

@Test(expected)

La annotation @Test(expected) sirve para avisar que el test debe lanzar algún tipo de excepción. En el caso que no se cumpla la condición el test sera marcado como fallido.


Ejemplo:
package ar.com.ladooscurojava.model.test;
import org.junit.Test;

/**
* @author nconde
*/
public class PersonaTest {

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


@Ignore

La annotation @Ignore sirve para avisarle al JUnit que ignore este método, esta anotación se utiliza generalmente cuando por alguna razón hemos modificado el código y estamos trabajando en el test. Puede ser que todavía nosotros no hallamos incluido código o que dependemos que algún desarrollador termine algo. 

Ejemplo:

package ar.com.ladooscurojava.model.test;
import org.junit.Test;

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

@Before Y @After

En  JUnit4 no existe la función setUp() o  tearDown(), en ves de eso tenemos las anotaciones @Before and @After. 

@Before: Significa que se ejecutara antes de cada método.
@After: Significa que se ejecutara después de cada método.

Tenemos que tener en cuenta, que se ejecutaran tantos Before como After por cada @Test que tengamos.

Ejemplo:
package ar.com.ladooscurojava.model.test;
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 ejecutara dos veces.


Salida de consola:


JUnit - Anotaciones / Annotation JUnit


@BeforeClass Y @AfterClass

En  JUnit4 existen dos funciones que se ejecutaran por única vez antes de todos los métodos y después de todos los métodos

@BeforeClass: Significa que se ejecutara antes de todos método.
@AfterClass: Significa que se ejecutara después de todos método.

Ejemplo:
package ar.com.ladooscurojava.model.test;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;

/**
* @author nconde
*/
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 ejecutaran una sola vez.

Salida de consola:

JUnit - Anotaciones / Annotation JUnit


@RunWith

La anotación  @RunWith se utiliza para indicar que dicha clase se correrá como una extensión o tipo de otra clase. 

Ejemplo:
package ar.com.ladooscurojava.model.test.suite;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;

/**
* @author nconde
*/

@RunWith(Suite.class)

public class TestSuite {
}

@Suite.SuiteClasses

La annotation @Suite.SuiteClasses se utiliza para indicar que un Test Suite correrá los siguientes test.

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

/**
* @author nconde
*/

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

public class TestSuite {

}

JUnit - Anotaciones / Annotation JUnit JUnit - Anotaciones / Annotation JUnit Reviewed by El lado oscuro de java on junio 03, 2014 Rating: 5

No hay comentarios:

Con la tecnología de Blogger.