아래 클래스 설정이 있습니다.스프링 : 필드 및 생성자 삽입이 모두있는 클래스에 대한 단위 테스트
class Base {
@Autowired
private BaseService service; //No getters & setters
....
}
@Component
class Child extends Base {
private final SomeOtherService otherService;
@Autowired
Child(SomeOtherService otherService) {
this.otherService = otherService;
}
}
나는 Child
클래스의 단위 테스트를 쓰고 있습니다. @InjectMocks
을 사용하면 otherService
이 null로 나타납니다. 내가 사용하는 경우 Child
클래스의 생성자를 테스트 할 때 Base
클래스의 필드는 null
이됩니다.
필드 주입에 대한 모든 논점을 알고 있습니다. 그러나 Base
및 Child
클래스가 속성을 삽입하는 방식을 변경하지 않고이를 해결할 방법이 있는지 알고 싶습니다.
감사합니다.
예, 주사를 수행하기 위해 Spring을 사용하지 마십시오. mock을 생성하고 원하는대로 테스트 설정에 삽입하십시오. – duffymo
자세히 설명해 주시겠습니까? mock을 만들 수는 있지만 그것을 삽입 할 수는 없습니다. '@ InjectMocks'를 사용하여 모의 객체를 삽입하면 생성자 삽입을 사용하기 때문에'Child' 클래스의 속성은'null'입니다. 테스트에서'Base' 클래스의 속성을 전달할 방법이 없기 때문에 생성자를 사용하여 테스트중인 클래스를 초기화 할 수 없습니다. – Mubin
테스트 케이스를 포함하십시오. –