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 有什么区别

相关推荐
Evan芙18 小时前
RDBMS的库、表、视图、索引、设计范式总结
数据库
一叶飘零_sweeeet18 小时前
从单机到集群:Redis部署全攻略
数据库·redis·缓存
soft200152519 小时前
MySQL Buffer Pool深度解析:LRU算法的完美与缺陷
数据库·mysql·算法
C++业余爱好者19 小时前
SQL Server 中数据库管理系统、数据库实例与数据库的关系与区别
数据库·oracle
保护我方头发丶19 小时前
ESP-wifi-蓝牙
前端·javascript·数据库
tgethe19 小时前
mysql-视图详解
数据库·mysql
漂亮的小碎步丶21 小时前
【6】数据库事务与锁机制详解(附并发结算案例)
数据库·事务·锁机制
北极糊的狐21 小时前
MySQL报错Communications link failure(通信链路失败)
数据库·mysql
合方圆~小文21 小时前
4G定焦球机摄像头综合介绍产品指南
数据结构·数据库·人工智能
zxrhhm21 小时前
数据库中的COALESCE函数用于返回参数列表中第一个非NULL值,若所有参数均为NULL则返回NULL
数据库·postgresql·oracle