2016-05-05 4 views
0

Вариант использования следующий: я хотел бы иметь возможность комбинировать параметризованный и не параметризованный тест, а также иметь разные параметры для различных параметризованных тестов.Можно ли комбинировать параметризованные тесты с параметризацией в jUnit?

Использование Parameterized.class кажется немного излишним, так как это взорвет конструктор для каждого нового модульного тестирования мне нужно параметризуем, также приведет к нескольким пробегов, не являющихся параметризованных тестов, которые я не заинтересован.

Итак, я думал о Theories.class, но хотя может быть предоставлено несколько @DataPoint s, те, которые относятся к отдельным типам, передаются как каждый аргумент функции тестирования и по-прежнему приводят к проверке только одной функции.

Я хотел бы, чтобы достичь чего-то вроде

@RunWith(Theories.class) 
class Test{ 
    @Theory(named="foo") 
    public void fooTest(Object input) { 
    } 

    public static @DataPoints(named="foo") Object[] inputs = {1, 2, 3, 4, 5}; 

    @Theory(named="bar") 
    public void barTest(Object input) { 
    } 

    public static @DataPoints(named="bar") Object[] inputs = {6, 7, 8, 9, 10}; 

    public void bazTest() { 
    } 
} 

Где fooTest протестирована с 1, 2, 3, 4, 5 и barTest с 6, 7, 8, 9, 10 соответственно.

Есть ли способ достичь этого, используя Theory? Есть ли альтернатива для достижения этого?

+0

Боюсь, вам нужно создать два различных тестовых классов для этого. Вы также можете переключиться на TestNG, который позволяет это. –

+0

@ tamasrev переключение на что-либо еще не является опцией. –

ответ

1

Вы не можете смешивать тестовый стиль с бегуном Theories. Но некоторые сторонние параметризированные бегуны, такие как JUnitParams, могут быть использованы таким образом.

например

@RunWith(JUnitParamsRunner.class) 
public class PersonTest { 

    @Test 
    @Parameters({"17, false", 
       "22, true" }) 
    public void personIsAdult(int age, boolean valid) throws Exception { 
    assertThat(new Person(age).isAdult(), is(valid)); 
    } 

    @Test 
    public void lookNoParams() { 
    etc 
    } 

} 
+0

Я действительно ищу вариант, который использует функции из коробки, предоставленные jUnit, альтернативы - это больше для улучшения общих знаний. –

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