Объединение @RunWith
(из JUnit 4) и @ExtendWith
(из JUnit Jupiter) не поддерживается: это механизмы расширения из двух разных структур.
Технически говоря, ваш SuiteClass
является JUnit4 тестовый класс.Таким образом, JUnit Jupiter не будет регистрировать или выполнять какие-либо расширения для него.
Что касается наборов в JUnit 5, мы (команда JUnit) планируем предоставить первоклассную поддержку для наборов, которыене требуется JUnit 4 Runner (т. е. @RunWith(JUnitPlatform.class)
).Подробности смотрите во всех GitHub проблемах, помеченных как "suites" .Не стесняйтесь смотреть и / или комментировать любые из этих проблем.
Тем временем, я полагаю, самым близким к реализации поддержки JUnit Jupiter "до и после пакета" будет реализация пользовательского расширения.который реализует BeforeAllCallback
и AfterAllCallback
.Это расширение должно было бы отследить, было ли оно уже вызвано путем сохранения флага в root ExtensionContext
Store
(как BeforeAllCallback
), чтобы оно выполнялось только один раз перед "люксом".Точно так же нужно будет подсчитать количество классов, для которых он выполняется, и отследить его в root Store
.Это будет служить Stack
или CountDownLatch
.Как и AfterAllCallback
, расширение должно уменьшать глобальный счетчик и только выполнить после завершения всех тестовых классов.
Очевидно, что вам нужно убедиться, что расширение вашего набора зарегистрировано.для каждого тестового класса, который принадлежит к комплекту.Возможно, специально скомпонованная аннотация упростит вам задачу.
Теперь, по общему признанию, я просто реализовал , что у меня в голове, но еще не кодировал такое расширение "suite".Так что, если вы на самом деле реализуете это, мне было бы интересно услышать о вашем опыте и, возможно, увидеть ваш код.; -)
Приветствия,
Сэм (основной коммиттер для JUnit 5)