2012-03-07 3 views
1

У меня есть несколько тестов в одном классе, которые зависят от переменных, заданных в методе установки. Поэтому было бы хорошо, если бы я мог выполнять все тесты несколько раз с разными глобальными переменными.Теория JUnit для всех тестов - требуется только параметризованный метод настройки

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

Я там для обходного пути для этого? Я не хочу комментировать каждый тест в классе и добавлять некоторую конфигурационную логику, если это можно обработать в центральном методе настройки.

ответ

2

Вы посмотрели Parameterized?

@RunWith(Parameterized.class) 
public class FibonacciTest { 
    @Parameters 
    public static Iterable<Object[]> data() { 
     return Arrays.asList(new Object[][] { { 0, 0 }, { 1, 1 }, { 2, 1 }, 
       { 3, 2 }, { 4, 3 }, { 5, 5 }, { 6, 8 } }); 
    } 

    private int fInput; 
    private int fExpected; 

    public FibonacciTest(int input, int expected) { 
     fInput= input; 
     fExpected= expected; 
    } 

    @Test 
    public void test() { 
     assertEquals(fExpected, Fibonacci.compute(fInput)); 
    } 
} 

Каждый экземпляр FibonacciTest будет построен с помощью конструктора два аргумента и значения данных в методе @Parameters.

+0

Да, я узнал, что прошлой ночью, спасибо :-) Я, хотя теории - это новый способ пойти, но они не совсем покрывают его. –

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