Ir al contenido

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)»

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;
}

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.

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];
}

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.

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).