Весенний загрузочный проект работает нормально, но выдает ошибку источника данных при тестировании Cntroller

#spring-boot #unit-testing #spring-mvc #spring-data-jpa #spring-data

Вопрос:

Я получаю следующую ошибку в тесте контроллера, который я написал:

Вызвано: org.springframework.фасоль.фабрика.Исключение NoSuchBeanDefinitionException: Нет подходящего компонента типа «javax.sql.Источник данных»: ожидается, что по крайней мере 1 компонент, который квалифицируется как кандидат на автоматическое подключение. Аннотации зависимостей: {@org.springframework.beans.factory.аннотация.Автоматическая проводка(требуется=true)} в org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1790) ~[весенние бобы-5.3.8.jar:5.3.8] в организации.пружинная конструкция.фасоль.завод.поддержка.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1346) ~[spring-beans-5.3.8.jar:5.3.8] в org.springframework.beans.factory.поддержка.DefaultListableBeanFactory.Разрешенная зависимость(DefaultListableBeanFactory.java:1300) ~[spring-beans-5.3.8.jar:5.3.8] в org.springframework.beans.factory.аннотация.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:657) ~[спринг-бобы-5.3.8.баночка:5.3.8]

само приложение работает нормально. Я настроил источник данных (MySQL) в application.properties — программно не настраивал для него компонент, и никаких проблем с dataSource запуском самого приложения не возникало.

Зависимости следующие: (опущены несущественные)

 <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

<dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>test</scope>
    </dependency>
 

Тестовый класс имеет следующую конфигурацию —

 @WebMvcTest(UserController.class)
@TestPropertySource(locations = "classpath:application-integrationtest.properties")
public class UserControllerTest {

    @MockBean private UserService userService;
    @MockBean private UserRepository userRepository;

    @Autowired private MockMvc mockMvc;
    ...   
 

приложение-integrationtest.properties имеет все и только следующее —

 spring.datasource.url=jdbc:h2:mem:test
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
spring.datasource.driver-class-name=org.h2.Driver
 

что я упускаю??

что делать, если я настрою DataSource компонент в коде-где я это делаю? Приложение работает повсюду без таких ошибок. Как я могу определить DataSource для тестового использования без каких DataSource -либо изменений в домене приложения ?

любая помощь будет признательна.

Не слишком разбираюсь в последней версии-прошло некоторое время с момента настройки Spring boot. Измотал меня.

Комментарии:

1. Вам вообще не должен понадобиться источник данных при использовании an @WebMvcTest . Это означает, что вы, вероятно, возитесь с вещами, которые вам не следует заставлять работать с тестированием среза. Я бы заподозрил, что вам понадобится только макет для UserService не хранилища.

2. @M. Deinum — он делает то же самое без хранилища. на самом деле, я поместил туда репозиторий, чтобы проверить, исправится ли он.

3. @M. Deinum любые предложения, где искать —SecurityConfig, конфигурация MySQL(application.properties).. ? я настроил все это в значительной степени стандартным способом. я не могу думать ни о чем другом, кроме вышеперечисленных 2

4. Очевидно, ваша служба зависит от источника данных, иначе она не просила бы об этом. Если у вас нет слишком большой конфигурации @SpringBootApplication , и платформа тестирования не может отключить части конфигурации. В целом, здесь слишком мало информации, чтобы ответить на этот вопрос.