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

相关推荐
Dxy12393102162 分钟前
MySQL INSERT ... ON DUPLICATE KEY UPDATE 与非主键唯一字段
数据库·mysql
zhousenshan24 分钟前
springboot事务管理几种方式
数据库
布局呆星1 小时前
SQLite数据库的介绍与使用
数据库·python
2401_838472511 小时前
用Python和Twilio构建短信通知系统
jvm·数据库·python
石头wang1 小时前
oracle jdbc 依赖以及对dbeaver的性能影响,如何选择oracle驱动, oracle jdbc 驱动
数据库·oracle
weixin_452159551 小时前
如何从Python初学者进阶为专家?
jvm·数据库·python
2301_790300961 小时前
用Python读取和处理NASA公开API数据
jvm·数据库·python
万象.2 小时前
redis持久化:AOF和RDB
数据库·redis·缓存
tod1132 小时前
力扣高频 SQL 50 题阶段总结(四)
开发语言·数据库·sql·算法·leetcode
!chen2 小时前
Redis快速实现布隆过滤器
数据库·redis·缓存