JUnit 版本影响 Bean 找不到
在为实现类编写测试类时,在测试类中使用构造器注入 Bean 时,提示找不到 Bean,代码如下:
@Service
public class WeChatServiceImpl implements IWeChatService {@Overridepublic String getNumber(String detailCode) { return detailCode; }
}
@SpringBootTest(classes = WeChatServiceImpl.class)
@RequiredArgsConstructor
class WeChatServiceImplTest {private final IWeChatService weChatService;@Testvoid getPhoneNumber() { System.out.println(weChatService.getNumber("Service")); }
}
这时运行测试方法时,提示 “No ParameterResolver registered for parameter” 的错误

这是由于 JUnit 5 默认情况下并不提供自动解析构造函数参数的能力。
最简单的解决方法:换为 @Autowired
注入。
@SpringBootTest(classes = WeChatServiceImpl.class)
class WeChatServiceImplTest {@Autowiredprivate IWeChatService weChatService;@Testvoid getPhoneNumber() {System.out.println(weChatService.getPhoneNumber("Service"));}
}
@Autowired 和 构造器 注入 Bean 有什么区别