나는 간단한 봄 부팅 응용 프로그램 구조 DBService의 새로운 인스턴스를 리턴하는 메소드. 이 메소드는 @Bean으로 주석 처리됩니다.봄 부팅 응용 프로그램의 테스트 전략 조언
@Bean
public DBService dbService() {
return new DBService();
}
DBService 클래스에는 Autowired가 포함되어 있습니다. 이 리포지토리는 다른 프로젝트 종속성에 속하며 RDBMS/Data Store에 연결합니다. autowire가 종속성 주입 실패 : 내 테스트 클래스에 dbService를 autowire하기 때
나는, 내가 오류 이름으로 콩을 만드는 'dbServices' "오류가 ApplicationContext를-test.xml의<bean id="dbService" class="com.path.to.class.in.dependency"/>
에서 빈을 정의 ; "
내가 뭘 잘못하고있어? 나는 스프링 부트 1.3.5를 사용하고 있으며 1.4 이후부터 사용 가능한 @SpringBootTest 주석을 사용할 수 없다. 어떤 도움을 많이 주시면 감사하겠습니다.
편집 : 차례로 DbService 클래스 저장소 클래스 (등등 userRepositoty, customerRepository 등)을 의미하기 때문에 , 나는 테스트 컨텍스트 파일에 너무 그 저장소의 콩을 정의하기 위해 노력했다. 그러나, DbService 클래스 (Main에 있음)에 삽입하고있는 저장소는 인터페이스이고 Spring Boot 프레임 워크는 런타임 중에 자동으로 실제 구현을 해결합니다. 테스트 컨텍스트에서이 작업을 수행하는 방법을 잘 모르겠습니다.
@Maciej, 답변 주셔서 감사하지만 이것은 현재의 문제입니다. Main에있는 "DbService"는 인터페이스로 정의 된 저장소를 autowires합니다. 런타임시, Spring/Spring Boot는 프로젝트 의존성으로부터 자동으로 그러한 인터페이스의 구현을 제공합니다. 내 테스트 클래스 "MyTestRoot"에 "DbService"를 주입하려고 시도하고 있으며 Unit Test를 실행하는 동안 리포지토리의 구체적인 구현을 얻는 방법을 스프링에 알려주는 방법을 생각할 수 없습니다. 에러를 발생시킵니다 :'code' 이름이 'dbServices'인 빈을 생성하는 중 에러가 발생했습니다 : 자동적 인 의존성의 주입이 실패했습니다'code' –
테스트 클래스로 질문을 업데이트하십시오. 나는 당신이 뭔가를 놓친 것 같아. –