Boucle à travers un tableau, chaque élément est un test JUnit
J'ai un JUnit 4 test qui parcourt un tableau de données de test:
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());
}
}
Parce que c'est tout dans une méthode de test, le test s'arrête dès qu'un élément dans le tableau échoue. Est-il un moyen de contourner cela, sans en faire une méthode pour chaque élément de test?
Peut-être quelque chose à la réflexion?
source d'informationauteur Bart van Heukelom
Vous devez vous connecter pour publier un commentaire.
Utiliser JUnit 4 paramétrable tests. Ils sont un ajustement parfait pour ce type de problème, bien que la documentation est assez défaut.
Voici quelques autres exemples sur la façon de les utiliser.:
attraper
AssertionError
et ajouter le pris d'erreur à la liste d'erreurs, à la fin de vérifier la liste vide élever un composéAssertionError
si ce n'.