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

相关推荐
伤不起bb3 小时前
MySQL 高可用
linux·运维·数据库·mysql·安全·高可用
Yushan Bai8 小时前
ORACLE RAC环境REDO日志量突然增加的分析
数据库·oracle
躺着听Jay8 小时前
Oracle-相关笔记
数据库·笔记·oracle
瀚高PG实验室8 小时前
连接指定数据库时提示not currently accepting connections
运维·数据库
运维成长记9 小时前
mysql数据库-中间件MyCat
数据库·mysql·中间件
尘客.9 小时前
DataX从Mysql导数据到Hive分区表案例
数据库·hive·mysql
TiDB 社区干货传送门10 小时前
从开发者角度看数据库架构进化史:JDBC - 中间件 - TiDB
数据库·oracle·中间件·tidb·数据库架构
虾球xz10 小时前
游戏引擎学习第280天:精简化的流式实体sim
数据库·c++·学习·游戏引擎
uwvwko11 小时前
BUUCTF——web刷题第一页题解
android·前端·数据库·php·web·ctf
扶尔魔ocy11 小时前
【Linux C/C++开发】轻量级关系型数据库SQLite开发(包含性能测试代码)
linux·数据库·c++·sqlite