Как мне выполнить интеграционное тестирование библиотеки SpringBoot, это не приложение?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как мне выполнить интеграционное тестирование библиотеки SpringBoot, это не приложение?

Сообщение Anonymous »

Прежде всего, заявление об отказе от ответственности: меня не совсем устраивает архитектура того, о чем я собираюсь спросить!
У нас есть проект на основе Spring, который создает библиотеку как банка. Эта библиотека включает в себя все обычные уровни контроллера/сервиса/jpa (репозиториев), которые вы могли ожидать, но не имеет загрузочного приложения, которое могло бы все это запустить.
Идея заключается в том, что различные проекты в нашей организации могут импортировать jar и мгновенно добавить общий (HTTP) API.
Модульные тесты работают нормально.
*Тесты IT.java — другое дело.Запускаются изолированно IDE от иерархии test/java/, они работают нормально и проходят успешно.
Однако при запуске через maven как часть сборки они терпят неудачу.
[ОШИБКА] ControllerIT » IllegalState Невозможно найти @SpringBootConfiguration...
У нас есть конфигурация загрузки в иерархии тестов, которую ИТ-специалисты должны использовать при запуске через IDE, но при запуске сборка maven, кажется, не может быть найдена для запуска приложения (по понятным причинам, поскольку она находится в дереве тестовых пакетов).
Имеющийся у нас загрузочный файл предназначен для не более чем тестового пакета для запуска библиотека для запуска ИТ.
У нас есть h2 в области тестирования Maven, но он не нужен в окончательной библиотеке (это зависит от хост-приложения, предоставляющего источник данных /connection и т. д.).
Требование:

[*]Запустите библиотеку API в приложение для тестирования
[*]Запускайте тесты как часть сборки Maven
[*]H2 не должен попасть в окончательный jar-файл
< /ul>
Симптомы при запуске установки mvn
[ОШИБКА] ControllerIT » IllegalState Невозможно найти @SpringBootConfiguration...
Предположительно, где-то в pom нужна какая-то конфигурация? Уже использую package.Boot в конфигурации плагина Springboot maven.
Может быть, просто нужно выяснить волшебную конфигурацию, чтобы указать ее на src/test/... Boot.class, а не на src/main/...Boot .class
Вопрос(ы):
Есть ли у Spring «правильный» способ достичь того, чего мы хотим ( Я бы выбрал MicroServices, но это не вариант, потому что... причины)?
Как нам следует реализовать ИТ-технологии для приложения SpringBoot, управляемого H2, если мы не хотим включать загрузочный класс (или библиотека H2) в jar продукта?
Должны ли мы создать отдельный модуль Maven только для ИТ-специалистов (с зависимостью от библиотечного модуля)?Сокращенное название Maven:

Код: Выделить всё

2.1.13.RELEASE




org.springframework.boot
spring-boot-dependencies
${version.spring-boot}
pom
import





org.springframework.boot
spring-boot-starter-data-rest


org.springframework.boot
spring-boot-starter-web


org.springframework.boot
spring-boot-starter-data-jpa


org.springframework.boot
spring-boot-starter-test
test


org.junit.vintage
junit-vintage-engine


junit
junit



com.h2database
h2
test


org.mockito
mockito-core
2.28.2
test


org.mockito
mockito-junit-jupiter
2.28.2
test


org.junit.jupiter
junit-jupiter
5.4.0
pom
test


org.junit.jupiter
junit-jupiter-api
test


org.junit.jupiter
junit-jupiter-engine
test







org.springframework.boot
spring-boot-maven-plugin
${version.spring-boot}


org.my.packages.test.Boot




org.apache.maven.plugins
maven-surefire-plugin
3.0.0-M5

true



org.apache.maven.plugins
maven-failsafe-plugin
3.0.0-M5

true




integration-test
verify






Конфигурация Spring Boot:

Код: Выделить всё

@SpringBootApplication()
public class Boot extends SpringBootServletInitializer
{
public static void main(String[] args)
{
SpringApplication.run(Boot.class, args);
}
}
ИТ-конфигурация:

Код: Выделить всё

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class ControllerIT
{

@Autowired
private TestRestTemplate restTemplate;
...
}
Номер 2 побудил меня изучить параметры @SpringBootTest.
В итоге я получил...

Код: Выделить всё

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
classes = ITConfig.class)
Где находится ITConfig:

Код: Выделить всё

@SpringBootApplication()
public class ITConfig extends SpringBootServletInitializer
{
public static void main(String[] args)
{
SpringApplication.run(org.lhasalimited.libraries.ITConfig.class, args);
}
}
Похоже, это работает. Спасибо за подсказку.

Подробнее здесь: https://stackoverflow.com/questions/649 ... at-isnt-an
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как выполнить интеграционное тестирование с Quartz в Xunit
    Anonymous » » в форуме C#
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Как выполнить интеграционное тестирование с Quartz в Xunit
    Anonymous » » в форуме C#
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • Как выполнить интеграционное тестирование в приложениях функций Azure, аналогично использованию microsoft.aspnetcore.mvc
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • .NET — интеграционное тестирование с промежуточным программным обеспечением (PACT)
    Anonymous » » в форуме C#
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Интеграционное тестирование ASP.NET Core IPasswordHasher.HashPassword генерирует разные хэши
    Anonymous » » в форуме C#
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»