Нужно ли копировать аннотации Spring во внутренние классы с помощью Kotlin Junit5 и Spring Boot? - PullRequest
0 голосов
/ 02 октября 2019

Я использую @Nested в JUnit5 для тематической группировки тестов. Следуя опубликованным примерам и шаблонам, которые я использовал в Java и Kotlin ранее. Однако аннотации Spring, связанные с внешним тестовым классом, не применяются к внутренним классам, как я ожидал. Это ошибка или мои неверные предположения?

Я тестирую конечную точку RESTful весной с аннотациями @SpringBootTest и @AutoConfigureMocMvc. Я хотел сгруппировать их в такие вещи, как аутентификация, получение, публикация, размещение и т. Д. Я сгруппировал их, используя @Nested и внутренние классы в соответствии с прошлым опытом и примерами. Однако я обнаружил, что, если я не скопировал все аннотации из внешнего тестового класса в каждое объявление внутреннего класса, ничего не получалось. Я не верю, что это имело место в Java и не подразумевается в примерах.

Сбои:

@SpringBootTest
@AutoConfigureMockMvc
class EndpointTest {
  // ... @Autowire's, mocks etc...

  @Nested
  inner class AuthTest {
    @Test
    fun `should fail with bad auth`() {
      // some logic
    }
  }
}

Успехов:

@SpringBootTest
@AutoConfigureMockMvc
class EndpointTest {
  // ... @Autowire's, mocks etc...
  @SpringBootTest
  @AutoConfigureMockMvc
  @Nested
  inner class AuthTest {
    @Test
    fun `should fail with bad auth`() {
      // some logic
    }
  }
}

Я быпредположили, и примеры, кажется, подтверждают, что внутренний класс не должен копировать все аннотации. Я не думаю, что в Java это так. Это что-то о коде аннотации Спрингс относительно Котлина?

1 Ответ

0 голосов
/ 03 октября 2019

Этого следовало ожидать, поскольку «псевдонаследование» аннотаций от включающих классов еще не поддерживается в Spring Framework (ни для Java, ни для Kotlin).

Подробности см. В следующем ответе: https://stackoverflow.com/a/44227179/388980

...