Как добавить параметры в расширения JUnit 5

Можно ли ввести (или иным образом получить) параметры, предоставляемые ParameterResolver, в расширение?

В следующем примере используются Spring и RestAssured, но я ищу более общее решение:

В тестовом классе я могу сделать следующее:

@BeforeEach
void setUpRestAssured(@LocalServerPort int port) {
    RestAssured.port = port;
}

Если бы я хотел поместить это в расширение, я бы реализовал BeforeEachCallback :

public class RestAssuredExtension implements BeforeEachCallback {
    @Override
    public void beforeEach(ExtensionContext context) throws Exception {
        int port = ???
    }
}

Я знаю, что мог бы создать поле с аннотацией @LocalServerPort и извлечь его с помощью AnnotationSupport, но это работает только потому, что расширение Spring внедряет его. Я ищу более общий подход, который будет работать с другими расширениями, используя преобразователи параметров.

Всего 1 ответ


Пройдя текущую реализацию методов и расширений жизненного цикла, я не вижу общего способа решения этой проблемы. Механизму расширений Юпитера потребуется способ доступа к другим расширениям или, по крайней мере, к зарегистрированным преобразователям параметров. Вы можете создать проблему по адресу https://github.com/junit-team/junit5 и запросить эту функцию.


Есть идеи?

10000