programing

모키토:제네릭을 사용한 매처 리스트

goodcopy 2022. 7. 29. 23:10
반응형

모키토:제네릭을 사용한 매처 리스트

Mockito의 특징:

when(mock.process(Matchers.any(List.class)));

다음과 같은 경우 경고를 회피 방법process를 취득하다List<Bar>대신?

Java 8 이상에서는 다음과 같이 간단합니다.

when(mock.process(Matchers.anyList()));

Java 7 이하에서는 컴파일러에 약간의 도움이 필요합니다.사용하다anyListOf(Class<T> clazz):

when(mock.process(Matchers.anyListOf(Bar.class)));

에 더하여anyListOf위에서는 항상 다음 구문을 사용하여 제네릭을 명시적으로 지정할 수 있습니다.

when(mock.process(Matchers.<List<Bar>>any(List.class)));

Java 8에서는 파라미터에 근거한 타입 추론이 새롭게 가능하기 때문에 Java 8을 사용하고 있다면 다음과 같이 동작할 수 있습니다.

when(mock.process(Matchers.any()));

둘 다 기억 안 나?any()도 아니다anyList()는 유형 또는 늘 검사를 포함하여 모든 검사를 적용합니다.Mockito 2.x에서는any(Foo.class)'어느쪽이든'이라는 의미로 바뀌었다.instanceof후우" 하지만any()여전히 "를 포함한 모든 가치"를 의미합니다.null".

메모: 위는 새로운 버전의 Mockito에서는 이름 충돌을 피하기 위해 ArgumentMatchers로 전환되었습니다.org.hamcrest.Matchers. 이전 버전의 Mockito는 계속 사용해야 합니다.org.mockito.Matchers위와 같이

Java 8(버전 7 또는 6) 이전 버전에서는 새로운 ArgumentMatchers 메서드를 사용합니다.anyList:

import static org.mockito.Mockito.*;
import org.mockito.ArgumentMatchers;

verify(mock, atLeastOnce()).process(ArgumentMatchers.<Bar>anyList());

필요했어요anyList()ArrayList 라고 입력했을 경우, 다음의 조작이 가능하게 됩니다.

(ArrayList<Bar>) ArgumentMatchers.<Bar>anyList()

언급URL : https://stackoverflow.com/questions/10512374/mockito-list-matchers-with-generics

반응형