Taller 1
Aplicación de pruebas unitarias con JUnit a métodos del taller de matrices
Sección titulada «Aplicación de pruebas unitarias con JUnit a métodos del taller de matrices»Tomando como base el Taller 1, en el que se desarrolló una aplicación para manipular y visualizar una matriz de números enteros de tamaño m × n, definida por el usuario, se le aplicará pruebas unitarias con JUnit a dos métodos de este programa.
La finalidad es mostrar cómo diseñar casos de prueba con sentido que verifiquen comportamientos reales del sistema y ayuden a prevenir errores de ejecución. Para ello se seleccionaron los siguientes métodos:
-
validarDimensiones(int filas, int cols) -
crearMatriz(int filas, int cols)
Método 1: validarDimensiones(int filas, int cols)
Sección titulada «Método 1: validarDimensiones(int filas, int cols)»Funcionalidad esperada
Sección titulada «Funcionalidad esperada»Este método debe verificar si las dimensiones ingresadas por el usuario son válidas para la creación de una matriz, para esto se considerará una dimensión válida como aquella donde ambos valores son mayores que cero.
public static boolean validarDimensiones(int filas, int cols) { return filas > 0 && cols > 0;}Pruebas unitarias diseñadas
Sección titulada «Pruebas unitarias diseñadas»Para definir el caso de prueba se debe considerar como validar las dimensiones corresponde al inicio del programa, ya que si se permite una matriz con filas o columnas inválidas (cero o negativas), se producirá un error de ejecución al intentar recorrerla o llenarla, por lo que se generarán pruebas que aseguren que el método filtre correctamente las entradas inválidas y acepte sólo configuraciones válidas.
import org.junit.jupiter.api.Test;import static org.junit.jupiter.api.Assertions.*;
class MatrizTest {
@Test void testDimensionesValidas() { // Caso esperado: ambas dimensiones válidas assertTrue(Matriz.validarDimensiones(3, 4)); }
@Test void testFilasNegativas() { // Caso negativo: no se pueden tener filas negativas assertFalse(Matriz.validarDimensiones(-1, 5)); }
@Test void testColumnasCero() { // Caso negativo: no se pueden tener columnas con valor cero assertFalse(Matriz.validarDimensiones(3, 0)); }
@Test void testAmbasDimensionesInvalidas() { // Caso extremo: ambas dimensiones inválidas assertFalse(Matriz.validarDimensiones(0, -2)); }}| Prueba | ¿Qué verifica? | ¿Por qué tiene valor? |
|---|---|---|
testDimensionesValidas |
Que el método permita dimensiones correctas. | Confirma que el sistema acepta valores funcionales. |
testFilasNegativas |
Que las filas negativas sean rechazadas. | Evita errores al intentar crear arreglos con tamaños inválidos. |
testColumnasCero |
Que las columnas con valor 0 no se acepten. | Refuerza que una matriz debe tener al menos una columna. |
testAmbasDimensionesInvalidas |
Que el método detecte múltiples errores. | Verifica la robustez del método ante entradas completamente erróneas. |
Método 2: crearMatriz(int filas, int cols)
Sección titulada «Método 2: crearMatriz(int filas, int cols)»Funcionalidad esperada
Sección titulada «Funcionalidad esperada»Este método crea y devuelve una matriz de enteros vacía con las dimensiones proporcionadas. En este caso no se debe llenar la matriz, ya que solo se busca reservar el espacio necesario.
public static int[][] crearMatriz(int filas, int cols) { return new int[filas][cols];}Pruebas unitarias diseñadas
Sección titulada «Pruebas unitarias diseñadas»Probar la creación de la matriz no sólo implica verificar que el objeto no sea null, sino que este tenga las dimensiones correctas solicitadas. Esto asegura que el método se comporta como una fábrica de matrices válidas que podrán ser llenadas y utilizadas posteriormente.
Código de prueba con JUnit
Sección titulada «Código de prueba con JUnit»import org.junit.jupiter.api.BeforeEach;import org.junit.jupiter.api.Test;import static org.junit.jupiter.api.Assertions.*;
class MatrizUtilsTest {
private int[][] matriz;
@BeforeEach void setUp() { matriz = MatrizUtils.crearMatriz(2, 3); }
@Test public void testMatrizNoNula() { // Verifica que el método retorne una matriz assertNotNull(matriz); }
@Test void testDimensionesMatriz() { // Verifica que la matriz tenga las dimensiones correctas assertEquals(2, matriz.length); // número de filas assertEquals(3, matriz[0].length); // número de columnas }}| Prueba | ¿Qué verifica? | ¿Por qué tiene valor? |
|---|---|---|
testMatrizNoNula |
Que el método no retorne null. |
Confirma que el método crea correctamente el objeto matriz. |
testDimensionesMatriz |
Que la matriz tenga exactamente las dimensiones solicitadas. | Garantiza que no se generan errores silenciosos (por ejemplo, filas correctas pero columnas mal inicializadas). |