




















Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Un lenguaje basado en java que hace mas facil el testing
Tipo: Diapositivas
1 / 28
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!





















JUnit es un framework que permite realizar la ejecución de
Suite (o Test Suite ): Grupo de tests. Una test suite es una
los tests que hay en la test class. Usualmente una suite incluye test classes del mismo package
Runner (o Test Runner ): El runner es la clase que ejecuta las test suites. JUnit proporciona diversos runners por defecto,
package main.domini; public class Calculator { public double add(double n1,double n2) { return n1 + n2; } public double multiply(double n1, double n2) { return n1 * n2; } public double subtract(double n1, double n2) { return n1 - n2; } public double divide(double n1, double n2) { return n1 / n2; } }
package test.domini; import src.domini.; import static org.junit.Assert.; import org.junit.Test; public class CalculatorTest { @Test public void add() { Calculator calculator = new Calculator(); double result = calculator.add( 10, 50 ); assertEquals( 40 , result, 0 ); }
... } Si hacemos que falle un test, por ejemplo el add...
En los ejemplos hemos usado org.junit.runner.JUnitCore , pero podríamos usar un TestRunner propio: package test.domini; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; public class TestRunnerPropio { public static void main(String[] args) { Result result = JUnitCore.runClasses(CalculatorTest.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } if (result.wasSuccessful()) { System.out.println("El test ha ido bien"); } else { System.out.println("El test ha ido mal"); } } }
Podemos detallar el funcionamiento de algunos asserts:
La anotación @Test puede tener parámetros opcionales, para poder controlar algunos aspectos de los tests:
@Test (expected=IdexOutOfBoundsException.class) public void empty() { new ArrayList
Ya conocemos la anotación @Test, pero para poder configurar el contexto en el que se ejecutan los tests podemos usar otras anotaciones:
invocar cada test (recordemos, método anotado con @Test). Aún así, los métodos anotados con @BeforeClass y @AfterClass se ejecutarán sólo una vez, antes de la primera instanciación de la clase y cuando acaben todos los tests, respectivamente
package test.domini; import org.junit.*; public class ExempleAnotacions { @BeforeClass public static void beforeClass() { System.out.println("Abans d'instanciar per primer cop la classe"); } @AfterClass public static void afterClass() { System.out.println("Després d'acabar tots els tests"); } @Before public void before() { System.out.println("Abans de test"); } @After public void after() { System.out.println("Després de test"); } @Test public void test1() { System.out.println("--> test 1"); } @Test public void test2() { System.out.println("--> test 2"); } @Ignore @Test public void ignoreTest() { System.out.println("test ignorat"); } } $ java org.junit.runner.JUnitCore test.domini.ExempleAnotacions JUnit version 4. Abans d'instanciar per primer cop la classe .Abans de test --> test 1 Després de test .Abans de test --> test 2 Després de test IDesprés d'acabar tots els tests Time: 0, OK (2 tests)
Lo más razonable es agrupar los tests en función de les clases que estamos probando. Aún así querremos ejecutarlos todos de una vez, sin tener que ir haciendo las diversas pruebas por cada grupo de clases. Para
@SuiteClasses, convenientemente parametrizadas. Por ejemplo, supongamos que tenemos dos tests: import static org.junit.Assert.; import org.junit.Test; public class TestCaseA { @Test public void testA1() { assertEquals("test tonto 1", 1+1, 2); } } import static org.junit.Assert.; import org.junit.Test; public class TestCaseB { @Test public void testB1() { assertTrue("test tonto 2", true); } }
contenga sólo ese test: import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; @RunWith(value = Suite.class) @SuiteClasses(value = { TestCaseA.class }) public class TestSuiteA {} import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; @RunWith(value = Suite.class) @SuiteClasses(value = { TestCaseB.class }) public class TestSuiteB {}
$ java org.junit.runner.JUnitCore TestSuiteA (o TestSuiteB) JUnit version 4. . Time: 0, OK (1 test)