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 有什么區別