以下是我的测试类的类代码。
@SpringBootTest(classes = { SpringBootApp.class }, webEnvironment = WebEnvironment.RANDOM_PORT)
public class OuterBeanTest {
@Inject
InnerBeanTest innerBean;
@Test
public void test() {
assertThat(this.innerBean.print()).isEqualTo("print");
}
@Named
static class InnerBeanTest {
String print(){
return "print";
}
};
}
但是在测试实例中注入静态类会引发关于Unsatisfied dependency expressed through field 'innerBean'; expected at least 1 bean which qualifies as autowire candidate.
如何将其注入测试实例?
修改
OuterBeanTest.java
位于com.general
的{{1}}包中,而Spring Boot应用位于src/test/java
com
包中
src/main/java
SpringBootApp.java
注意:同样有效package com;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootApp {
public static void main(String[] args) {
SpringApplication.run(SpringBootApp.class, args);
}
}
,但现在我已升级到Spring-4.2.8
,但它已停止工作。
答案 0 :(得分:1)
Spring Boot 1.4中的测试支持不再自动检测测试类中的静态嵌套组件。这是因为在幕后使用了org.springframework.boot.test.context.filter.TestTypeExcludeFilter
。
因此,您有两种选择。
InnerBeanTest
移至顶级课程,或...... OuterBeanTest
注释@Import(OuterBeanTest.InnerBeanTest.class)
。此致
萨姆