4、SpringBoot项目单元测试

本文详细介绍了如何在SpringBoot项目中进行单元测试,包括依赖包的配置、测试方法的编写、使用JUnit框架进行测试,以及如何批量运行多个测试类。同时,还讲解了如何使用注解来忽略特定的测试方法或类。

接着上一章:https://blog.youkuaiyun.com/romulusla01/article/details/93487431
本章源码地址:https://download.youkuaiyun.com/download/romulusla01/11257183
参考资料:https://blog.youkuaiyun.com/weixin_39800144/article/details/79241620
1、依赖的包
在这里插入图片描述
2、找到StringBootTestApplicationTests
在这里插入图片描述
3、添加2个方法
在这里插入图片描述
4、新建package
在这里插入图片描述
新建HelloTest,继承StringBootTestApplicationTests,编写测试方法,测试名字为rome的User记录是否有2条
在这里插入图片描述
MySql数据库中的user数据
在这里插入图片描述
run as JUNIT,测试结果,绿色条代表成功
在这里插入图片描述
那么改下testGetUsersByName()方法
在这里插入图片描述
结果报错,与期望值1不同,实际结果为2
在这里插入图片描述

在这里插入图片描述

5、打包测试
项目开发完后,我们写了100个测试用例类,我不能每个类都点击进去,然后慢慢执行,SpringBoot提供了打包测试的方式:我们用一个类,把所有的测试类整理进去,然后直接运行这个类,所有的测试类都会执行。

再新建一个SayHelloTest
在这里插入图片描述

新建SuiteTest类,将HelloTest、SayHelloTest打包进SuiteTest
在这里插入图片描述
run as junit,爆出错误
在这里插入图片描述
6、忽略测试
当我一个测试类写了10个测试方法时,其中有1个我暂时不想测,想跳过,但是其他9个我想一次运行,怎么办?这里有一个忽略注解,写在方法上,可以忽略这个测试方法,写在类上,可以忽略这个类。

修改SayHelloTest中的方法
在这里插入图片描述
run as JUnit,这里就把这个原本会报错的方法给忽略了,测试成功。
在这里插入图片描述

### 解决 IDEA 中 SpringBoot 项目单元测试报错的问题 在处理 IDEA 中 SpringBoot 项目单元测试报错问题时,可以从以下几个方面入手分析并解决问题: #### 1. **依赖配置** 确保 `pom.xml` 或 `build.gradle` 文件中已正确引入了 Spring Boot 测试相关的依赖项。以下是 Maven 配置中的典型依赖声明[^1]: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <version>2.5.0</version> </dependency> ``` 如果版本不匹配或者缺少该依赖,则可能导致无法加载必要的测试框架组件。 #### 2. **JUnit 版本冲突** Spring Boot 默认支持 JUnit 5 (Jupiter),而某些旧版 IDEA 可能默认使用 JUnit 4 的运行器。可以通过显式指定 JUnit Jupiter 来避免兼容性问题。例如,在测试类中标记如下注解[^2]: ```java import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest public class YourTestClass { @Test public void yourTestMethod() { // 测试逻辑 } } ``` 注意:如果仍然保留了 `@RunWith(SpringRunner.class)` 注解,可能会引发冲突,因为这是针对 JUnit 4 的设置。建议移除此注解以适配 JUnit 5。 #### 3. **日志排查** 当遇到未知的异常时,应优先查看 IDEA 控制台的日志输出。通常情况下,“Caused by” 后面的信息能够提供更精确的原因说明[^3]。例如,如果是数据库连接失败引起的错误,可能需要检查数据源配置文件 (`application.properties` 或 `application.yml`) 是否存在拼写错误或参数缺失。 #### 4. **上下文初始化失败** 假如抛出了类似于 “ApplicationContext failed to load”的异常,则表明应用上下文中可能存在未注入成功的 Bean 实例。此时可以尝试通过以下方式定位原因: - 检查被标注为 `@Component`, `@Service`, `@Repository` 等注解的类是否有语法错误; - 如果涉及外部资源(比如 Redis 客户端),确认其对应的 Starter 已经加入到工程里,并且属性值填写无误。 #### 5. **Mockito 使用不当** 对于那些需要模拟对象行为的方法调用场景来说,合理运用 Mockito 库显得尤为重要。下面给出一段简单的例子来演示如何创建 Mock 对象以及验证交互次数[^2]: ```java @Test void testFindAllWithMockito(){ List<String> mockData = Arrays.asList("item1", "item2"); BookCategoryService mockedService = Mockito.mock(BookCategoryService.class); when(mockedService.findAll()).thenReturn(mockData); assertEquals(2, mockedService.findAll().size()); verify(mockedService, times(1)).findAll(); } ``` 以上代码片段展示了怎样利用 Mockito 构建虚拟服务实例,并对其方法返回的结果加以断言检验。 --- ### 总结 综上所述,解决 IDEA 下 SpringBoot 单元测试报错的关键在于仔细核对构建工具里的插件清单、选用合适的测试引擎版本号、解读后台打印出来的追踪堆栈消息等内容。按照上述指导逐一排除潜在隐患之后,大多数常见难题都能迎刃而解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值