tengo una prueba JUnit 4 que los bucles a través de un conjunto de datos de prueba:Loop a través de la matriz, cada elemento de una prueba JUnit
public @Test void testAll() {
final Object[][] sets = new Object[][] {
// SET TYPE VALUE
// --- valid sets
// groups
x(s(A,1, B,1, C,1), G),
x(s(A,4, B,4, D,4), G),
x(s(A,8, B,8, D,8, C,8), G),
x(s(J,J, B,4, D,4), G, 4*3),
x(s(A,9, J,J, D,9), G, 9*3),
x(s(A,2, B,2, C,2), G),
x(s(A,4, B,4, J,J), G, 4*3),
x(s(A,4, B,4, C,4, D,4), G),
// runs
x(s(A,1, A,2, A,3), R),
x(s(B,8, B,9, B,10), R),
x(s(J,J, C,2, C,3), R, 6),
x(s(D,8, D,9, J,J, D,11), R, 38),
x(s(D,8, D,9, J,J, J,J), R, 38),
// sames
x(s(A,1, A,1), S),
x(s(B,4, B,4, B,4), S),
x(s(C,8, C,8), S),
x(s(D,3, D,3), S),
// doubt-cases, assume group (TODO: verify this is correct)
x(s(J,J, J,J, D,4), G, 4*3),
x(s(A,7, J,J, J,J), G, 7*3),
x(s(J,J, D,9, J,J), G, 9*3),
x(s(J,J, J,J, J,J), G, 1),
// --- invalid sets
x(s(B,1, A,2, A,3), I), // not same colour
x(s(D,11, D,12, J,J, J,J), I), // last joker is 14
x(s(B,1, B,1, A,1), I), // duplicate B1
x(s(A,1, A,2, A,3, A,5), I), // gap A4
x(s(J,J, A,1, J,J, B,1, C,1), I), // one J replaces D1, then nothing left to replace
x(s(A,1, A,2), I), // short
x(s(B,1), I), // shorter
x(s(A,5, A,6), I), // short
};
for (Object[] o : sets) {
TileSet s = (TileSet) o[0];
Type t = (Type) o[1];
int v = (Integer) o[2];
System.out.println(s);
assertEquals(t, s.getType());
assertEquals(v, s.getValue());
// test isValid, though it's Too Simple To Break(R)
if (t == Type.INVALID) assertFalse(s.isValid());
else assertTrue(s.isValid());
}
}
Debido a que es todo en un método de ensayo, toda la prueba se detiene tan pronto como uno elemento en la matriz falla. ¿Hay alguna forma de evitar eso, sin hacer un método para cada elemento de prueba? Tal vez algo con la reflexión?
Si necesita que continúe a través afirmar fracasos, ¿qué hay de la construcción una lista de elementos que fallan, mientras haces un bucle, y luego afirmas que la lista está vacía después del ciclo? Si no está vacío, imprima la lista de fallas. – birryree
@birryree ¿cómo harías esto? ¿no se detendría el bucle una vez que falla un elemento? Soy un principiante por cierto. – papercuts