title: Loop through array, each element a JUnit test
body: <p>I have a JUnit 4 test that loops through an array of test data:</p>
  
  <pre><code>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());
      }
  
  }
  </code></pre>
  
  <p>Because it's all in one test method, the whole test stops as soon as one element in the array fails. Is there a way around that, without making a method for each test item?
  Maybe something with reflection?</p>