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