El tutorial de JUnit proporciona conceptos básicos y avanzados de prueba unitaria en java con ejemplos. Nuestro tutorial de junit está diseñado para principiantes y profesionales.
Es un marco de prueba de código abierto para programadores java. El programador de Java puede crear casos de prueba y probar su propio código.
Es uno de los marcos de prueba unitarios. La versión actual es junit 4.
Para realizar pruebas unitarias, necesitamos crear casos de prueba. los caso de prueba unitario es un código que asegura que la lógica del programa funcione como se espera.
los org.junit El paquete contiene muchas interfaces y clases para pruebas junit como Assert, Test, Before, After, etc.
Tipos de pruebas unitarias
Hay dos formas de realizar pruebas unitarias: 1) prueba manual 2) prueba automatizada.
1) Prueba manual
Si ejecuta los casos de prueba manualmente sin ningún soporte de herramientas, se conoce como prueba manual. Consume mucho tiempo y es menos confiable.
2) Prueba automatizada
Si ejecuta los casos de prueba mediante el soporte de herramientas, se conoce como prueba automatizada. Es rápido y más confiable.
Anotaciones para las pruebas de Junit
El marco de trabajo de Junit 4.x se basa en anotaciones, así que veamos las anotaciones que se pueden usar al escribir los casos de prueba.
@Prueba la anotación especifica que el método es el método de prueba.
@Test (tiempo de espera = 1000) La anotación especifica que el método fallará si tarda más de 1000 milisegundos (1 segundo).
@Antes de clase La anotación especifica que el método se invocará solo una vez, antes de comenzar todas las pruebas.
@Antes La anotación especifica que el método se invocará antes de cada prueba.
@Después La anotación especifica que el método se invocará después de cada prueba.
@Después de clases La anotación especifica que el método se invocará solo una vez, después de finalizar todas las pruebas.
Afirmar clase
La clase org.junit.Assert proporciona métodos para afirmar la lógica del programa.
Métodos de la clase Assert
Los métodos comunes de la clase Assert son los siguientes:
- void assertEquals (booleano esperado, booleano real): comprueba que dos primitivas / objetos sean iguales. Está sobrecargado.
- vacío asertTrue (condición booleana): comprueba que una condición es verdadera.
- void assertFalse (condición booleana): comprueba que una condición sea falsa.
- vacío asertNull (Objeto obj): comprueba que el objeto sea nulo.
- vacío asertNotNull (Objeto obj): comprueba que el objeto no sea nulo.
Archivos jar necesarios
Necesitas cargar junit4.jar y hamcrest-core.jar archivos.
descargar los archivos jar junit
Ejemplo simple de JUnit en eclipse IDE
Veamos la estructura de directorios de este ejemplo.
Escribe la lógica del programa
Escribamos la lógica para encontrar el número máximo de una matriz.
paquete com.javatpoint.logic; Cálculo de clase pública {public static int findMax (int arr[]) {int max = 0; for (int i = 1; i
Escribe el caso de prueba
Aquí, estamos usando JUnit 4, por lo que no es necesario heredar la clase TestCase. El código de prueba principal está escrito en el método testFindMax (). Pero también podemos realizar alguna tarea antes y después de cada prueba, como puede ver en el programa dado.
paquete com.javatpoint.testcase; importar org.junit.Assert estático. *; import com.javatpoint.logic. *; import org.junit.Test; clase pública TestLogic {@Test public void testFindMax () {assertEquals (4, Calculation.findMax (nuevo int[]{1,3,4,2})); assertEquals (-1, Calculation.findMax (nuevo int[]{-12, -1, -3, -4, -2})); }}
Para ejecutar este ejemplo, haga clic derecho en la clase TestLogic -> Ejecutar como -> 1Junit Test.
Veamos la salida que se muestra en eclipse IDE.
Como puede ver, cuando pasamos los valores negativos, arroja AssertionError porque el método findMax () por segunda vez devuelve 0 en lugar de -1. Significa que la lógica de nuestro programa es incorrecta.
Lógica correcta del programa
Como puede ver, la lógica del programa para encontrar el número máximo para la matriz dada no es correcta porque no devuelve -1 en caso de valores negativos. La lógica correcta del programa se da a continuación:
paquete com.javatpoint.logic; Cálculo de clase pública {public static int findMax (int arr[]) {int max = arr[0]; // arr[0] en lugar de 0 para (int i = 1; i
Si vuelve a ejecutar el programa junit, verá el siguiente resultado.
Otro ejemplo de marco Junit
Escribe el código del programa
paquete com.javatpoint.logic; Cálculo de clase pública {// método que devuelve el número máximo public static int findMax (int arr[]) {int max = 0; for (int i = 1; i
Escribe el caso de prueba
paquete com.javatpoint.testcase; importar org.junit.Assert.assertEquals estático; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import com.javatpoint.logic.Calculation; public class TestCase2 {@BeforeClass public static void setUpBeforeClass () lanza Exception {System.out.println («antes de la clase»); } @Before public void setUp () lanza Exception {System.out.println («before»); } @Test public void testFindMax () {System.out.println («caso de prueba encuentra máximo»); assertEquals (4, Calculation.findMax (nuevo int[]{1,3,4,2})); assertEquals (-2, Calculation.findMax (nuevo int[]{-12, -3, -4, -2})); } @Test public void testCube () {System.out.println («cubo de caso de prueba»); asertEquals (27, Calculation.cube (3)); } @Test public void testReverseWord () {System.out.println («palabra inversa del caso de prueba»); assertEquals («ym eman si nahk», Calculation.reverseWord («mi nombre es khan»);} @After public void tearDown () lanza Exception {System.out.println («after»);} @AfterClass public static void tearDownAfterClass () lanza Exception {System.out.println («después de la clase»);}}
Output:before class before test case find max after before test case cube after before test case reverse word after after class