JUnit 版本影响 Bean 找不到

JUnit 版本影响 Bean 找不到

在为实现类编写测试类时,在测试类中使用构造器注入 Bean 时,提示找不到 Bean,代码如下:

java 复制代码
@Service
public class WeChatServiceImpl implements IWeChatService {
  @Override
  public String getNumber(String detailCode) { return detailCode; }
}
java 复制代码
@SpringBootTest(classes = WeChatServiceImpl.class)
@RequiredArgsConstructor
class WeChatServiceImplTest {

  private final IWeChatService weChatService;

  @Test
  void getPhoneNumber() { System.out.println(weChatService.getNumber("Service")); }
}

这时运行测试方法时,提示 "No ParameterResolver registered for parameter" 的错误

这是由于 JUnit 5 默认情况下并不提供自动解析构造函数参数的能力。

最简单的解决方法:换为 @Autowired 注入。

java 复制代码
@SpringBootTest(classes = WeChatServiceImpl.class)
class WeChatServiceImplTest {
	@Autowired
	private IWeChatService weChatService;

	@Test
	void getPhoneNumber() {
		System.out.println(weChatService.getPhoneNumber("Service"));
	}
}

@Autowired 和 构造器 注入 Bean 有什么区别

相关推荐
逐米时代41 分钟前
智能招聘与人岗匹配:可解释匹配让录用依据有迹可循
大数据·数据库·人工智能
承渊政道42 分钟前
KES专业技能包发布:覆盖数据库开发、迁移与运维全流程
运维·数据库·gitee·数据库开发·金仓数据库
IvorySQL1 小时前
PostgreSQL 日报| RI 快速路径并发读取缺陷(8 月 13 日)
数据库·postgresql
highreport2 小时前
HighReport报表工具定时调度和邮件定时发送
运维·服务器·数据库
01_ice2 小时前
数据库基础
数据库
deepdata_cn2 小时前
向量数据库是非结构化数据的AI检索底座
数据库·人工智能
梁辰兴2 小时前
软件工程:数据库设计
数据库·软件工程·数据库设计·逻辑设计·概念设计·梁辰兴·物理设计
10mAh2 小时前
【Git】误删分支、reset --hard 后提交丢了怎么办?——reflog、fsck 与安全恢复实战
数据库·git·安全·回归
J_bean2 小时前
剖析 MySQL InnoDB 共享行锁 (S) & 排他行锁 (X)
数据库·mysql·共享行锁·s lock·排他行锁·x lock
霸道流氓气质2 小时前
RedLock:Redis 分布式锁的高可用方案
数据库·redis·分布式