Как мне выполнить интеграционное тестирование библиотеки 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 МБ.

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