junit5 дает зависимости между расширениями

Я только начал писать несколько тестов и расширений junit5.

Я довольно быстро понял, что считаю проблемой: как мне сказать junit5, что ExtensionB требует присутствия ExtensionA?

Например, у меня есть «базовое» расширение ExtensionA, которое запускает базу данных и выполняет некоторую инициализацию, и этого достаточно для некоторых тестов.

У меня также есть ExtensionB, который «требует» некоторой работы, проделанной ExtensionA, в основном получение некоторых объектов из магазина и последующее разрешение некоторых параметров.

Очевидно, что всякий раз, когда мне нужно расширение B, мне также нужно присутствие расширения A. Есть ли способ заставить это? Я пробовал аннотировать @ExtendWith(A.class) класс ExtensionB, но это, похоже, не имело никакого эффекта.

Есть ли способ добиться того, что мне нужно?

Или я просто неправильно использую junit5 и должен иметь только одно расширение, которое делает все за меня?


person al3c    schedule 14.11.2019    source источник


Ответы (1)


Расширения Юпитера не имеют состояния и поэтому не декларируют зависимости друг от друга.

Хотите иметь друзей А и Б? Создайте расширение C, которое заимствует код из A и B.

При этом расширения могут связываться с собой и другими расширениями через хранилище расширений: https://junit.org/junit5/docs/current/user-guide/#extensions-keeping-state

person Sormuras    schedule 14.11.2019
comment
Почему отсутствие гражданства означает, что они не могут зависеть друг от друга? У меня есть 2 в зависимости от того, 1 что-то хранит в магазине, а другой извлекает это. По сути, я спрашиваю, как создать расширение C, о котором вы говорите, если бы это существующее расширение B само по себе было бы бесполезно. - person al3c; 14.11.2019