다음은 테스트 클래스 용 클래스 코드입니다. 테스트 인스턴스에스프링 부트 테스트가 테스트 클래스의 정적 중첩 된 @Named 구성 요소를 감지하지 않습니다.
@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.
에 대한 오류가 발생합니다? 봄 부팅 응용 프로그램 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);
}
}
주에 com
패키지 반면
편집
OuterBeanTest.java
는 src/test/java
에 com.general
패키지에 : 같은 지금 Spring-4.2.8
을 일하지만 Spring-4.3.7
으로 업그레이드했습니다. 그것은 작동을 멈췄다.
'안 정적'모순이다. JLS # 8.1.3을 참조하십시오. 이것은 정적 클래스입니다. – EJP
@EJP는 명시 적이었습니다. 나는 그 차이점을 안다. –
일부 관련 정보가 누락되었습니다. 'OuterBeanTest'는 어떤 패키지입니까? 'SpringBootApp'가 속한 패키지는 무엇입니까? 그리고'SpringBootApp'에 어떤 주석이 있습니까? –