Параметризованный тест JUnit5 с несколькими источниками метода - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть 4 теста, каждый из которых имеет собственный источник метода, но единственное различие между ними - один параметр, в каждом методе я запускаю макеты по-своему. Есть ли способ, которым я могу передать несколько методов источника?

Пример:

    @ParameterizedTest
    @MethodSource("mSource1")
    public void testM1(MyMock m1, MyMock m2) {
            callMut(m1, m2, ENUM.VAL1);
            //same assertion
    }

    @ParameterizedTest
    @MethodSource("mSource2")
    public void testM2(MyMock m1, MyMock m2) {
            callMut(m1, m2, ENUM.VAL2);
            //same assertion
    }

   private static Stream<Arguments>  mSource1() {
            when(myMock1.getX()).thenReturn("1");
            //...
    }

   private static Stream<Arguments>  mSource2() {
            when(myMock1.getY()).thenReturn("1");
            //...
   }

Я ищу что-то вроде:

@ParameterizedTest
@MethodSource("mSource1", "mSource2")
public void testM1(MyMock m1, MyMock m2, MyEnum myEnumValue) {
    callMut(m1, m2, myEnumValue);
    //same assertion
}

1 Ответ

0 голосов
/ 05 ноября 2018

@MethodSource может принять столько фабричных методов, сколько вам нужно, согласно javadocs:

публичная абстрактная строка [] значение

Имена методов тестового класса для использовать в качестве источников для аргументов; не должно быть пустым.

Так что просто поместите их в фигурные скобки и убедитесь, что они также возвращают значение enum:

@MethodSource({"mSource1", "mSource2"})

Хотя, как я понимаю, вам, возможно, придется перенести настройку when (). Then () на сам тест, но это деталь вашего влечения.

...