mockito
두 필드의 유형이 동일하면 유형별 모의 삽입 방법을 알지 못합니다. 그래서 이름으로 주입하려고합니다. 이 경우 테스트중인 클래스의 필드 이름이 사용자가 만든 모의 객체와 일치하지 않는 것처럼 보입니다.
필드 주입; 여기 는 doc@InjectMocks
입니다 가짜는 먼저 유형에 따라 해결됩니다 (이름에 관계없이 유형의 일치 주사가 발생하는 경우) 필드에 이름과 모의 이름이 일치하는 동일한 유형의 여러 속성이있는 경우.
당신은 당신의 신청의 이름을 바꾸거나 명시 적으로 모의 이름을 사용할 수 있습니다 :
@Mock(name="foo")
private Map<String, Integer> map1;
@Mock(name="bar")
private Map<String, Date> map2;
그러나 나는이 최선의 해결책이라고 생각하지 않습니다. 파일 이름의 이름이 바뀌면 false negative 테스트 결과를 얻습니다. 기능은 올바르게 작동하지만 테스트는 실패합니다.
나를 위해 최선의 해결책은 코드를 리팩터링하여 테스트 대상 클래스가 생성자의 종속성을 수신하도록하는 것입니다.그 후 당신은 이런 식으로 조롱 할 수도
@Mock
private Map<String, Integer> map1;
@Mock
private Map<String, Date> map2;
private ClassUnderTets cut;
@Before
public void setUp() throws Exception {
cut = new ClassUnderTets(map1, map2);
}
또는 :
@Mock
private Map<String, Integer> map1;
@Mock
private Map<String, Date> map2;
@InjectMocks
private ClassUnderTets cut;
를 문서에서 언급 한 바와 같이 :
생성자 주입; 가장 큰 생성자가 선택, 다음 인수는
작동 나를 위해. 모 키토 ver 1.10.19. 당신이 우리에게 보여주지 않을 것이 있습니까? – Michael