пропустить соединение с базой данных mysql при тестировании при весенней загрузке - PullRequest
0 голосов
/ 03 июля 2018

Я использую приведенную ниже зависимость (в gradle) в моем проекте весенней загрузки, чтобы заставить его работать с mysql

    compile("org.springframework.boot:spring-boot-starter-data-jpa:${springBootCloudVersion}")

И предоставили параметр источника данных в моем файле application.properties ниже: -

spring.datasource.url=jdbc:mysql://127.0.0.1/test?zeroDateTimeBehavior=convertToNull
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

и работает нормально.

При выполнении тестовых случаев в Spring Boot, Я хочу пропустить создание соединения с базой данных с помощью mysql, поскольку я ничего не получаю из базы данных, вместо этого я имитировал (используя mockito), и это правильный путь.

Я выполнил поиск в google и stackoverflow, и мне не удалось найти решение о том, "как я могу пропустить создание соединения с базой данных при выполнении тестовых случаев".

Может кто-нибудь помочь мне об этом или руководство

Мой тестовый файл: -

package com.myproject.utility.services.impl;

@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles("test")    
public class UserServicesImplTest {
  private static final String MOBILE = "123456";

  @MockBean
  private UserRepository userRepository;

  @Autowired
  private UserService userService;

  @Test
  public void verify(){
    when(userRepository.findAll().thenReturn(Optional.empty());
    userService.verifyDetails(MOBILE);
  }
}

1 Ответ

0 голосов
/ 03 июля 2018

Вы должны предоставить «тестовую конфигурацию», которую вы можете поместить в свой тестовый класс, тогда Spring будет использовать ее вместо рабочей:

@RunWith(SpringRunner.class)
@SpringBootTest    
public class UserServicesImplTest {

  private static final String MOBILE = "123456";

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

  @Test
  public void verify(){
    when(userRepository.findAll().thenReturn(Optional.empty());
    userService.verifyDetails(MOBILE);
  }

  @Configuration
  @Import(UserService.class)
  static class TestConfig {
    @Bean
    UserRepository userRepository() {
      return mock(UserRepository.class);
    }
  }
}

Больше информации здесь: Определение конфигурации теста

...