Spring boot 在spring boot中进行测试时跳过与mysql的数据库连接

Spring boot 在spring boot中进行测试时跳过与mysql的数据库连接,spring-boot,gradle,spring-data-jpa,build.gradle,spring-test,Spring Boot,Gradle,Spring Data Jpa,Build.gradle,Spring Test,我在我的spring boot项目中使用了下面的依赖项(在gradle中),以使其与mysql一起工作 compile("org.springframework.boot:spring-boot-starter-data-jpa:${springBootCloudVersion}") 并在下面的my application.properties文件中提供了数据源设置:- spring.datasource.url=jdbc:mysql://127.0.0.1/test?zeroDate

我在我的spring boot项目中使用了下面的依赖项(在gradle中),以使其与mysql一起工作

    compile("org.springframework.boot:spring-boot-starter-data-jpa:${springBootCloudVersion}")
并在下面的my 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(使用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);
  }
}

您应该提供一个“测试配置”,可以将其放在测试类中,然后Spring将使用它而不是生产配置:

@RunWith(SpringRunner.class)
@春靴测试
公共类UserServiceSimpleTest{
私有静态最终字符串MOBILE=“123456”;
@MockBean私有用户存储库用户存储库;
@自动连线专用用户服务;
@试验
公共无效验证(){
when(userRepository.findAll().thenReturn(可选的.empty());
userService.verifyDetails(手机);
}
@配置
@导入(UserService.class)
静态类TestConfig{
@豆子
UserRepository UserRepository(){
返回mock(UserRepository.class);
}
}
}

更多信息在这里:

感谢@Cepr0提供的解决方案。我已经尝试过了,但它不允许我这么做。可能是因为这是我关于stackoverflow或更少声誉的第一篇帖子。@SunilJindal刚刚在答案的左边设置了“复选标记…”你的测试看起来很简单,也许你不需要startup spring上下文。只需为测试和模拟必填字段创建新对象。对于注入字段,您可以调用
org.springframework.test.util.ReflectionTestUtils.setField