/Junit5_Tests

Examples of work with Junit5, Mockito, AssertJ, Jacoco. Description in doc folders. Section cheat sheet. For memory!

Primary LanguageJava

Изучение фреймворка Junit 5

Примеры работы с аннотациями внутри тестового класса:

  • @Test
  • @BeforeEach
  • @AfterEach
  • @BeforeAll
  • @AfterAll

Пример применения аннотации @TestInstance к тестовому классу, различия между TestInstance.Lifecycle.PER_METHOD и TestInstance.Lifecycle.PER_CLASS (см. FourthTest.java).

Изучение методов:

  • *.assertTrue()
  • *.assertEquals()

Папка DOC содержит:

Применение принципов TDD на простых примерах (см. TddMethodLess.java). Пример комплексного запуска тестов - Launcher API (см. AllTestRunnerLauncher.java)

Папка DOC содержит:

  • различия Junit 4 и Junit 5, структура фреймворка (см. Junit 5.txt);

Краткие примеры работы с библиотекой AssertJ (см. AssertJ.txt), работа с методом: *.assertThat().

Применение Junit метода *.assertAll()

Пример применения аннотации @Tag (см. UserServiceTest.java)

Краткое рассмотрение фильтрации тестов при выполнении по тегам (см. TestRunnerLauncher.java)

Папка DOC содержит:

Исследование методов управления порядком запуска тестов, применение аннотаций:

  • @TestMethodOrder(MethodOrderer.order-type.class)
  • @Order(number)
  • @DisplayName("name of method")

Применение вложенных классов, аннотация @Nested (см. UserServiceTest.java).

Папка DOC содержит:

Работа с параметризированными тестами. Исследование аннотаций:

  • @ParameterizedTest
  • @NullSource
  • @EmptySource
  • @NullAndEmptySource
  • @ValueSource
  • @MethodSource
  • @CsvFileSource
  • @CsvSource

Тестирование исключений, использование метода:

  • assertThrows

См. подробнее UserServiceTest.java

Понятие Flaky тест. Применение аннотаций:

  • @Disable
  • @RepeatedTest(value, name)
  • @TimeOut()

Использование методов:

  • assertTimeout

Dependency Injection - внедрение зависимостей. Расширение функциональности тестов. Аннотация @ExtendWith. Использование:

  • UserServiceParamResolver.class
  • GlobalExtension.class
  • PostProcessionExtension.class
  • ConditionalExtension.class
  • ThrowableExtension.class

Папка DOC содержит:

Cтатьи о принципах внедрения зависимостей:

Применение фреймворка Mockito:

  • Примеры создание MOCK требуемого класса, применение структуры (Mockito.doReturn().when().some_method) и (Mockito.when(some_class.some_method).thenReturn(data)) их отличия (см. UserServiceMockTest.java).
  • Пример создания SPY требуемого класса, применение Mockito.when. ... и Mockito.do. ... (см. UserServiceSpyTest.java)

Папка DOC содержит:

Применение фреймворка Mockito:

  • Пример расширений Mockito
  • Использование аннотаций:
    • @Mock
    • @InjectMocks
    • @Captor
  • Применение методов:
    • Mockito.times()
    • Mockito.verify()

Практическое применение Junit 5 и Mockito при покрытии тестами простого проекта (применение Given-When-Then).