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

相关推荐
数据要素X10 分钟前
【数据架构10】数字政府架构篇
大数据·运维·数据库·人工智能·架构
lixzest43 分钟前
Redis实现数据传输简介
数据库·redis·缓存
搬砖的小熊猫43 分钟前
MySQL常见面试题
数据库·mysql
Savvy..1 小时前
Day05 Maven
java·junit·maven·注解
weixin_419658311 小时前
MySQL的JDBC编程
数据库·mysql
JavaLearnerZGQ1 小时前
Docker部署Nacos
数据库·docker·容器
何传令2 小时前
SQL排查、分析海量数据以及锁机制
数据库·sql·mysql
msg_data2 小时前
windows环境下MySQL 8.0 修改或重置密码
数据库·mysql
踏过山河,踏过海4 小时前
Django自带的加密算法
数据库·django·sqlite