Mockito는 다음을 제공합니다.
when(mock.process(Matchers.any(List.class)));
어떻게 경고를 피하기 위해 process
A가 소요 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()));
유형 또는 null 검사를 포함하여 검사를 적용 any()
하거나 anyList()
적용 하지 않습니다 . Mockito 2.x에서는 any(Foo.class)
“any instanceof
Foo” 를 의미하도록 변경 되었지만 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());