Question

I have some test suites that in essence looks like

@Test
public void test1_2() {
    test(1,2);
}
@Test
public void test1_3() {
    test(1,3);
}
@Test
public void test4_5() {
    test(4,5);
}
@Test
public void test4_9() {
    test(4,9);
}

// and so forth

private void test(int i, int j) throws AssertionError{
    // ...
}

(This is not the actual tests, but the essence, each @Test method only calls one method)

So my thinking was that I could use @RunWith for a custom BlockJUnit4ClassRunner which accepts a List of jUnit Runners.

How would this be achived? Or is there a better way to do it?

Was it helpful?

Solution

Why not use @Parameter ?

@RunWith(Parameterized.class)
public class YourTest{

 private int i;
 private int j;

 public Parameter(int i, int j) {
    this.i= i;
    this.j= j;
 }

 @Parameters
 public static Collection<Object[]> data() {
      Object[][] data = new Object[][] { { 1, 2 }, { 1,3 }, { 4,5 }, { 4,9 } };
      return Arrays.asList(data);
 }

 @Test
 public void test() throws InterruptedException {
    //use i & j
 } 
}

OTHER TIPS

This looks to me like something that should be done with Theories. Otherwise, you could use Enclosed to have multiple inner classes each with its own runner.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top