2014-01-24 4 views
1

У меня есть несколько параметризованных тестовых классов, которые принимают одинаковые параметры. Когда я запускаю тесты, каждый вызывает свой метод data(), который возвращает параметры для выполнения теста.Те же параметры для нескольких классов тестов JUnit

Моя проблема заключается в том, что все мои методы data() одинаковы и создают одни и те же параметры, и я не могу понять, как удалить этот дублированный код.

Цель состоит в том, чтобы иметь одну единственную функцию, которая вычисляет параметры для всех тестовых классов.

Если у вас есть идеи, как это сделать, это мне очень поможет.

Благодаря

ответ

1

Навскидку, я бы сказал, что у вас есть два классических варианта OO - наследование и включение.

С наследованием, вы просто положить метод data() в каком-то базовом классе:

public class MyTestCaseBase { 
    @Parameters 
    public static Collection<Object[]> data() { 
     return ... 
    } 
} 

public class MyTest extends MyTestCaseBase { 
    // tests 
} 

С включением вы оставить себе возможность продлить различных классов, но нужно сделать еще немного «сантехника» себя:

public class MyTestParameters { 
    public static Collection<Object[]> data() { 
     return ... 
    } 
} 

public class MyTest { 
    @Parameters 
    public static Collection<Object[]> data() { 
     return MyTestParameters.data(); 
    } 

    // tests... 
} 
+0

Спасибо, я думал о наследовании, но не знал, было ли это очень актуально. – zelus

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