gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 03:07:41 26 4
gpt4 key购买 nike

我在我的 Spring Boot 项目中使用以下依赖项(在 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);
}
}

最佳答案

您应该提供一个“测试配置”,您可以将其放置在您的测试类中,然后 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);
}
}
}

更多信息在这里: Detecting Test Configuration

关于spring-boot - 在 Spring Boot 中进行测试时跳过与 mysql 的数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51161200/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com