Как получить доступ к консоли H2 в тесте Spring Boot 2.0, который использует DataJpaTest - PullRequest
0 голосов
/ 16 мая 2018

Как использовать @DataJpaTest, как настроить тестовый класс для работы с битами, необходимыми для обработки запросов http для консоли H2?

Я запускаю тест Spring Boot 2.0, в котором используется H2. Я хочу установить точку останова в тесте и просмотреть содержимое таблицы в H2. Однако, когда тест останавливается на точке останова, и я указываю своему браузеру http://localhost:8080/h2-console,, результатом будет пустая страница с текстом «localhost не отправил никаких данных». Таким образом, похоже, что либо тест выполняется без битов, необходимых для обработки http-запроса для консоли H2, либо URL-адрес, который я использую, неверен.

Примечание: когда я запускаю тест, консоль показывает, что встроенная база данных H2 успешно запущена, поэтому я уверен, что H2 действительно работает.

Вот мои аннотации к тестовому классу:

@ExtendWith(SpringExtension.class)

@DataJpaTest

@TestInstance(TestInstance.Lifecycle.PER_CLASS)

Я прочитал статью, в которой предлагалось включить devtools в мой pom, но это не решило мою проблему.

Редактировать: Суть моей проблемы в том, что я не могу понять, как настроить тест для включения как встроенной тестовой базы данных, так и работающего сервлета. Если я аннотирую тестовый класс обоими @DataJpaTest и @SpringBootTest(webEnvironment = ...), тест завершается сбоем из-за отсутствующего компонента ServletWebServerFactory. Удаление @DataJpaTest устраняет проблему отсутствующего компонента, но у меня больше нет встроенной тестовой базы данных. Использование только @DataJpaTest не запускает сервлет

1 Ответ

0 голосов
/ 27 августа 2018

Консоль H2 - это веб-приложение, которое запускается только при определенных условиях:

  • Вы разрабатываете веб-приложение на основе сервлетов.
  • com.h2database: h2 находится в пути к классам.
  • Вы используете инструменты разработчика Spring Boot.

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-sql.html#boot-features-sql-h2-console

Если вы запускаете тест и не запускаете ServletContext, консоль h2 также не запустится.

...