Spring Boot 4中使用JUnit 5 @Nested嵌套测试类结合父类继承时触发UnsatisfiedDependencyException异常
Spring Boot 4中使用JUnit 5 @Nested嵌套测试类结合父类继承时触发UnsatisfiedDependencyException异常
Disclaimer : 这是一个最小可复现示例(MRE)
我最近碰到了下面这个异常:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'com.MyTest': Unsatisfied dependency expressed through field 'myStr': No qualifying bean of type 'java.lang.String' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
对应的测试类代码如下:
首先是抽象父类:
public abstract class AbstractTest { abstract void perform(); @Nested class NestedTest { @Test void test() { perform(); } } }
然后是具体的测试类:
@SpringBootTest(classes = MyTest.InternalConfig.class) class MyTest extends AbstractTest { @Autowired private String myStr; @Override void perform() { assertThat(myStr).isNotNull(); } @Configuration public static class InternalConfig { @Bean public String myStr() { return "test"; } } }
我发现只要满足以下任意一种情况,这个问题就会消失:
- 去掉@Nested嵌套测试类
- 去掉父类继承关系
- 降级到Spring Boot 3.5版本
备注:内容来源于stack exchange,提问作者wintenbb
相关产品推荐
相关产品推荐

