Skip to content

Commit 15bddfa

Browse files
committed
Mejora de los casos de prueba para conseguir mayor cobertura
1 parent bbde4c5 commit 15bddfa

1 file changed

Lines changed: 39 additions & 17 deletions

File tree

src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java

Lines changed: 39 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -41,24 +41,24 @@ public static void tearDown() throws Exception {
4141
}
4242

4343
/**
44-
* Test method for {@link ubu.gii.dass.c01.ReusablePool#getInstanceReusable()}.
44+
* Método de prueba para {@link ubu.gii.dass.c01.ReusablePool#getInstanceReusable()}.
4545
*/
4646
@Test
4747
@DisplayName("testGetInstance")
4848
public void testGetInstance() {
4949
try {
5050
ReusablePool pool1 = ReusablePool.getInstance();
5151
ReusablePool pool2 = ReusablePool.getInstance();
52-
assertNotNull(pool1);
53-
assertNotNull(pool2);
54-
assertEquals(pool1, pool2, "Ambas son identicas");
52+
assertNotNull(pool1, "La instancia pool1 no debería ser nula.");
53+
assertNotNull(pool2, "La instancia pool2 no debería ser nula.");
54+
assertEquals(pool1, pool2, "Ambos deben ser idénticos");
5555
} catch (Exception e) {
56-
fail("Exception en testGetInstance " + e.getMessage());
56+
fail("Excepción en testGetInstance: " + e.getMessage());
5757
}
5858
}
5959

6060
/**
61-
* Test method for {@link ubu.gii.dass.c01.ReusablePool#acquireReusable()}.
61+
* Método de prueba para {@link ubu.gii.dass.c01.ReusablePool#acquireReusable()}.
6262
*/
6363
@Test
6464
@DisplayName("testAcquireReusable")
@@ -67,6 +67,7 @@ public void testAcquireReusable() {
6767
// Se almacenan los reusables adquiridos para compararlos
6868
Reusable[] reusables = new Reusable[ReusablePoolTest.maxResources];
6969

70+
// Adquirir el máximo de instancias disponibles
7071
for (int numReusable = 0; numReusable < ReusablePoolTest.maxResources; numReusable++) {
7172
try {
7273
reusables[numReusable] = pool.acquireReusable();
@@ -76,24 +77,32 @@ public void testAcquireReusable() {
7677
}
7778
}
7879

79-
// Verifica que los reusables adquiridos sean distintos entre sí
80+
// Verificar que los reusables adquiridos sean distintos entre sí
8081
for (int i = 0; i < ReusablePoolTest.maxResources - 1; i++) {
8182
for (int j = i + 1; j < ReusablePoolTest.maxResources; j++) {
8283
assertNotEquals(reusables[i], reusables[j], "Los reusables deben ser distintos.");
8384
}
8485
}
8586

8687
// Comprueba que una nueva adquisición lanza una excepción
87-
try {
88+
assertThrows(NotFreeInstanceException.class, () -> {
8889
pool.acquireReusable();
89-
fail("Excepcion NotFreeInstanceException no se ha lanzado al adquirir una nueva instancia reusable");
90-
} catch (NotFreeInstanceException ex) {
91-
// Se espera una excepción, si llega hasta aquí, el código es correcto.
90+
}, "No se lanzó NotFreeInstanceException al intentar adquirir más instancias.");
91+
92+
// Caso límite adicional: Liberar una instancia y volver a adquirirla
93+
try {
94+
pool.releaseReusable(reusables[0]);
95+
Reusable reciclado = pool.acquireReusable();
96+
assertNotNull(reciclado, "El reusable reciclado es nulo.");
97+
assertSame(reusables[0], reciclado, "El recurso debe ser reutilizado tras liberarlo");
98+
pool.releaseReusable(reciclado);
99+
} catch (Exception ex) {
100+
fail("Error en el caso límite adicional de testAcquireReusable: " + ex.getMessage());
92101
}
93102
}
94103

95104
/**
96-
* Test method for {@link ubu.gii.dass.c01.ReusablePool#releaseReusable()}.
105+
* Método de prueba para {@link ubu.gii.dass.c01.ReusablePool#releaseReusable()}.
97106
*/
98107
@Test
99108
@DisplayName("testReleaseReusable")
@@ -102,19 +111,32 @@ public void testReleaseReusable() {
102111
ReusablePool pool = ReusablePool.getInstance();
103112
Reusable obj1 = pool.acquireReusable();
104113

105-
assertNotNull(obj1, "No deberia ser null");
114+
assertNotNull(obj1, "El reusable no debería ser nulo.");
106115
pool.releaseReusable(obj1);
107116

108117
Reusable obj2 = pool.acquireReusable();
109-
assertSame(obj1, obj2, "Tiene que ser reusado");
118+
assertSame(obj1, obj2, "El reusable debe ser reutilizado.");
110119
pool.releaseReusable(obj2);
111120

112-
// Try to release the same object again to trigger DuplicatedInstanceException
121+
// Caso límite: Intentar liberar null debe lanzar excepción
122+
assertThrows(IllegalArgumentException.class, () -> {
123+
pool.releaseReusable(null);
124+
}, "No se lanzó IllegalArgumentException al intentar liberar null.");
125+
126+
// Caso límite: Liberar un objeto no gestionado por el pool
127+
// Suponemos que crear un objeto Reusable directamente no está permitido
128+
Reusable fakeReusable = new Reusable();
129+
assertThrows(IllegalArgumentException.class, () -> {
130+
pool.releaseReusable(fakeReusable);
131+
}, "No se lanzó IllegalArgumentException al intentar liberar un objeto no adquirido previamente.");
132+
133+
// Caso límite adicional: Intentar liberar nuevamente el mismo objeto
134+
pool.releaseReusable(obj2);
113135
assertThrows(DuplicatedInstanceException.class, () -> {
114136
pool.releaseReusable(obj2);
115-
});
137+
}, "No se lanzó DuplicatedInstanceException al intentar liberar dos veces el mismo objeto.");
116138
} catch (Exception e) {
117-
fail("Excepcion en testReleaseReusable: " + e.getMessage());
139+
fail("Excepción en testReleaseReusable: " + e.getMessage());
118140
}
119141
}
120142
}

0 commit comments

Comments
 (0)