2015-01-21 6 views
0

Я хотел бы создать тестовый пример JUnit, который создает случай для каждой итерации массива. Как мне это сделать? Я видел некоторые документы о @Parameterized.Parameters, но мне кажется, что мне нужно будет восстановить исходный массив, чтобы он выглядел как {{array[0], constantValue}, {array[1], constantValue}}. Есть ли способ, я могу получить JUnit сделать следующее:Итерация через тестовый пример JUnit с массивом и постоянным значением

public class Testing { 

String[] array; 
String constantValue; 

@Test 
public void test_arrayValue0() { 
    assertEquals(array[0] + " is true", true, method(array[0], constantValue)); 
} 

@Test 
public void test_arrayValue1() { 
    assertEquals(array[1] + "is true", true, method(array[1], constantValue)); 
} 


@Test 
public void test_arrayValue2() { 
    assertEquals(array[2] + " is true", true, method(array[2], constantValue)); 
} 
//..until array is complete 
} 

ответ

3

Вы должны параметризировать тест со значениями массива (и необязательно индексов):

@RunWith(Parameterized.class) 
public class Testing { 
    private final static String constantValue = "myConstant"; 

    @Parameters 
    public static Object[][] params() { 
     return new Object[][]{ 
       new Object[] { "item0", 0 }, 
       new Object[] { "item1", 1 }, 
       //... 
     }; 
    } 

    @Param(0) 
    public String arrayValue; 

    @Param(1) 
    public int arrayIndex; 

    @Test 
    public void test_arrayValue() { 
     assertEquals("array" + arrayIndex + " is true", true, method(arrayValue, constantValue)); 
    } 
} 

Тогда ваш test_arrayValue будет называться много раз по мере того, как вы предоставляли параметры, каждый раз указав следующую указанную вами пару индексов и значений.

В качестве альтернативы, вы можете определить, вы массиву только поле:

private final String[] array = new String[] {"item0", "item1", ... } 

А потом параметризировать тест только индекс.

Смежные вопросы