JUnitParams для каждого метода класса

Можно ли запустить параметризованный тест для каждого метода класса теста с помощью JUnitParams и аннотаций на уровне класса? Что-то вроде:

@RunWith(JUnitParamsRunner.class)
@Parameters(method = "paramsGenerator")
public class TestMethod {

    public Integer[] paramsGenerator() {
        return new Integer[] {1, 2, 3};
    }

    @Test
    public void test1(Integer myInt) {
        ......
    }

    @Test
    public void test2(Integer myInt) {
        ......
    }
}

2 ответа

Решение

Нет, у вас не может быть аннотации параметров уровня класса, которая охватывала бы все методы тестирования. Вы должны объявить @Parameters(method = "paramsGenerator") на каждом методе испытаний. Ваш вариант использования довольно редок - чаще всего для разных методов тестирования требуются разные параметры (например, у вас есть один метод для допустимого и один для неверного ввода).

Тестовый класс должен быть таким:

@RunWith(Parameterized.class)
public class Testcase {

    private int myInt;

    public Testcase(int myInt) {
        this.myInt = myInt;
    }

    @Parameters(name = "{0}")
    public static Collection<Integer> data() {
        Integer[] data = new Integer[] {1,2,3,4};

        return Arrays.asList(data);
    }

    @Test
    public void test1() {
        // TODO
    }

    @Test
    public void test2() {
        // TODO
    }
}

Я не знаю откуда ты JUnitParamsRunner от. Как вы можете видеть в моем примере, JUnit 4 определяет Parameterized,

Другие вопросы по тегам