Dependency Injection в JUnit5. Интерфейс ParameterResolver

Содержание

Слайд 2

Интерфейс ParameterResolver

Входит в экспериментальный API.
Обеспечивает динамическую привязку (resolving) параметров на этапе исполнения.
Имплементации

Интерфейс ParameterResolver Входит в экспериментальный API. Обеспечивает динамическую привязку (resolving) параметров на
необходимо регистрировать.
Позволяет инжектировать любое число параметров в любом требуемом порядке.

Слайд 3

Интерфейс ParameterResolver

Поддерживает constructor injection.
Поддерживает method injection в методах со след.аннотациями:
@Test
@TestFactory
@BeforeEach, @AfterEach, @BeforeAll

Интерфейс ParameterResolver Поддерживает constructor injection. Поддерживает method injection в методах со след.аннотациями:
или @AfterAll

Слайд 4

Встроенные резолверы

Зарегистрированы и активированы по умолчанию:
TestInfoParameterResolver
TestReporterParameterResolver
RepetitionInfoParameterResolver
Все прочие резолверы параметров надо активировать путем

Встроенные резолверы Зарегистрированы и активированы по умолчанию: TestInfoParameterResolver TestReporterParameterResolver RepetitionInfoParameterResolver Все прочие
регистрации соответствующих расширений через @ExtendWith.

Слайд 5

TestReporterParameterResolver

Служит для инжекции объекта типа TestReporter в тот или иной метод.
Объект TestReporter

TestReporterParameterResolver Служит для инжекции объекта типа TestReporter в тот или иной метод.
может применяться для публикации дополнительных сведений о текущем тесте.

Слайд 6

TestReporter

Рекомендован к использованию, когда надо передать информацию в каналы stdout или stderr.
Эта

TestReporter Рекомендован к использованию, когда надо передать информацию в каналы stdout или
информация поступает в метод TestExecutionListener.reportingEntryPublished() и может обрабатываться средствами IDEs или включаться в отчеты.
Методы:
void publishEntry(Map record)
void publishEntry(String key, String value)
void publishEntry(String key)

Слайд 7

RepetitionInfoParameterResolver

Инжектирует объект типа RepetitionInfo в методы, маркированные аннотациями @RepeatedTest, @BeforeEach или @AfterEach.
Зарегистрирован

RepetitionInfoParameterResolver Инжектирует объект типа RepetitionInfo в методы, маркированные аннотациями @RepeatedTest, @BeforeEach или
по умолчанию, но работает только в контексте @RepeatedTest.

Когда объект RepetitionInfo используется в качества параметра @BeforeEach- или @AfterEach-метода, все тестовые методы должны иметь аннотацию @RepeatedTest.

Слайд 8

RepetitionInfo

Применяется для извлечения информации:
о текущей тестовой итерации
о числе итераций, заданных для соответствующего

RepetitionInfo Применяется для извлечения информации: о текущей тестовой итерации о числе итераций,
@RepeatedTest-метода
Методы:
int getCurrentRepetition()
int getTotalRepetitions()

Слайд 9

Класс DynamicTest

Класс DynamicTest

Слайд 10

@TestFactory

Эта аннотация служит для динамического создания тестов.
Входит в экспериментальный API.
Аннотированный метод должен:
возвращать

@TestFactory Эта аннотация служит для динамического создания тестов. Входит в экспериментальный API.
объект типа Stream, Collection, Iterable или Iterator.
быть нестатическим.

Слайд 11

@TestFactory

Для генерации конкретного теста можно воспользоваться следующим методом:
static DynamicTest dynamicTest( String

@TestFactory Для генерации конкретного теста можно воспользоваться следующим методом: static DynamicTest dynamicTest(
displayName, Executable executable)
displayName: индицируемое имя метода.
executable: тестовая бизнес-логика.

Слайд 12

BlackBox Testing vs WhiteBox Testing

BlackBox Testing vs WhiteBox Testing

Слайд 13

Интеграция с Mockito

Интеграция с Mockito

Слайд 14

Классификация Test Doubles

Классификация Test Doubles