Spring boot 在spring boot中进行测试时跳过与mysql的数据库连接
我在我的spring boot项目中使用了下面的依赖项(在gradle中),以使其与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
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