Тестирование стартера с помощью Springboot + JUnit - PullRequest
0 голосов
/ 20 июня 2019

У меня есть пользовательская библиотека (стартер), созданная с помощью SpringBoot. Таким образом, у него нет основного метода или @SpringBootApplication аннотированного класса.

Я хочу проверить эту функциональность стартера с помощью JUnit. Я создал класс в src/test (TestApplication) для запуска.

@SpringBootTest
@ContextConfiguration(classes = TestApplication.class)
@RunWith(SpringRunner.class)
public class SettingsTest {
    @Autowired
    private MyService myService;
    @Test
    public void testSettingsLoad(){
      //do smth
    }
}

@SpringBootApplication
public class TestApplication  {
    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);
    }
}

Однако, TestApplication main не вызывается, и контекст приложения отображается неправильно. Я попытался без аннотации @RunWith (вообще без контекста Spring) и с добавлением класса непосредственно в аннотацию @SpringBootTest (также игнорируется).

Я прочитал этот пост , но это не очень помогло.

Любые идеи приветствуются.

1 Ответ

0 голосов
/ 20 июня 2019

Стартер - это автоконфигурация.Когда я пишу стартеры, я не тестирую приложение с пружинной загрузкой, которое использует стартер, я тестирую сам стартер, и это довольно хорошо задокументировано в разделе 49.4. Тестирование автоматической конфигурации

private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
    .withConfiguration(AutoConfigurations.of(UserServiceAutoConfiguration.class));

@Test
public void defaultServiceBacksOff() {
    this.contextRunner.withUserConfiguration(UserConfiguration.class)
        .run((context) -> {
            assertThat(context).hasSingleBean(UserService.class);
            assertThat(context.getBean(UserService.class))
            .isSameAs(context.getBean(UserConfiguration.class).myUserService());
    });
}

Итак, вы делаете то, что вы создаете ApplicationRunnerContext, а затем загружаете свой entryclass из своего стартера и затем утверждаете в этом контексте то, что было загружено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...