问题
测试类里面的静态内部类识别不到
@RunWith(SpringRunner.class)
@SpringBootTest
public class FooTest {
@Autowired
private Bar bar;
@Test
public void bar() {
}
@Component
public static class Bar {
}
}
当执行bar
测试方法的时候 报错:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.my.app.dao.FooTest$Bar' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1654) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
解决
经过断点调试发现
org.springframework.beans.factory.support.DefaultListableBeanFactory#doGetBeanNamesForType
this.beanDefinitionNames
并没有fooTest.Bar
添加两个额外的注解后
@RunWith(SpringRunner.class)
@SpringBootTest
@ComponentScan
@ImportAutoConfiguration
public class FooTest
会去调用如下方法 注入fooTest.Bar
到beanDefinitionNames
中
org.springframework.beans.factory.support.DefaultListableBeanFactory#registerBeanDefinition
对应的调用栈信息
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。