22 | Spring Test 常见错误
傅健
你好,我是傅健。
前面我们介绍了许多 Spring 常用知识点上的常见应用错误。当然或许这些所谓的常用,你仍然没有使用,例如对于 Spring Data 的使用,有的项目确实用不到。那么这一讲,我们聊聊 Spring Test,相信你肯定绕不开对它的使用,除非你不使用 Spring 来开发程序,或者你使用了 Spring 但是你不写测试。但话说回来,后者的情况就算你想如此,你的老板也不会同意吧。
那么在 Spring Test 的应用上,有哪些常见错误呢?这里我给你梳理了两个典型,闲话少叙,我们直接进入这一讲的学习。
案例 1:资源文件扫描不到
首先,我们来写一个 HelloWorld 版的 Spring Boot 程序以做测试备用。
先来定义一个 Controller:
当访问 http://localhost:8080/hi 时,上述接口会打印自动注入的 HelloWorldService 类型的 Bean。而对于这个 Bean 的定义,我们这里使用配置文件的方式进行。
定义 HelloWorldService,具体到 HelloWorldService 的实现并非本讲的重点,所以我们可以简单实现如下:
定义一个 spring.xml,在这个 XML 中定义 HelloWorldService 的 Bean,并把这个 spring.xml 文件放置在 /src/main/resources 中:
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
Spring Test 常见错误 本文深入分析了在 Spring Test 中常见的两个错误案例。首先介绍了关于资源文件扫描不到的问题,通过一个 HelloWorld 版的 Spring Boot 程序进行测试,发现在测试中无法加载 spring.xml 文件,导致测试失败。作者提出了两种修正方式,一是在加载目录上放置 spring.xml,二是在 @ImportResource 使用classpath加载方式。其次,文章讨论了关于 Mock 的错误,发现 Spring Context 被多次启动,导致测试运行缓慢。通过分析发现,根源在于使用了 @MockBean 导致 MergedContextConfiguration 不同,从而导致 Context 不能被复用。作者提出了修正方案,包括手工实现类似功能的 Mockito 方法或将相关的 MockBean 定义到一个统一的地方。总结指出,在使用 Spring Test 时需要注意资源文件的加载方式和 @MockBean 可能导致的 Spring Context 反复新建问题。最后,文章强调了重点,提醒读者注意在使用 @ImportResource 时避免使用绝对路径指定资源,并建议注意加速测试的方法。整体而言,本文通过具体案例深入分析了 Spring Test 中常见错误,并提供了解决问题的思路和方法,对于使用 Spring Test 进行开发的技术人员具有一定的参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Spring 编程常见错误 50 例》,新⼈⾸单¥59
《Spring 编程常见错误 50 例》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(1)
- 最新
- 精选
- Ethan New把依赖 Mock 的 Bean 声明在一个统一的地方,这种方式也太不方便了2023-01-03归属地:浙江
收起评论