Mockito.any ()는 제네릭과 인터페이스를 전달합니다.
제네릭으로 인터페이스 유형을 전달할 수 있습니까?
인터페이스 :
public interface AsyncCallback<T>
내 테스트 방법에서 :
Mockito.any(AsyncCallback.class)
미루 <ResponseX>
거나하지 .class
않았다.
형식에 안전한 방법이 있습니다. 다음과 같은 형식으로 사용 ArgumentMatchers.any()
하고 한정하십시오.
ArgumentMatchers.<AsyncCallback<ResponseX>>any()
의견에 언급 된 pierrefevrier는 Mockito의 새로운 버전과 함께
Matchers.<AsyncCallback<ResponseX>>any()
Java 8을 사용 any()
하면 향상된 유형 유추로 인해 인수 또는 유형 매개 변수없이 간단하게 정적 가져 오기 를 사용할 수 있습니다 . 컴파일러는 이제 대상 유형 (메소드 인수의 유형)에서 실제로 의미하는 것을 알았습니다 Matchers.<AsyncCallback<ResponseX>>any()
. 이것은 Java 8 이전의 솔루션입니다.
제네릭을 허용하려면 다음과 같은 메커니즘을 채택해야했습니다.
import static org.mockito.Matchers.any;
List<String> list = any();
when(callMyMethod.getResult(list)).thenReturn(myResultString);
이것이 누군가를 돕기를 바랍니다.
pierrefevrier 의견을 답변으로 게시하면 댓글 대신 답변에있는 경우 유용 할 수 있습니다.
Mockito의 새로운 버전 : (Matchers.<AsyncCallback<ResponseX>>any()
thSoft의 답변에 덧붙여 메소드의 any ()에 대한 정규화 된 호출은 반환 유형이 유추를 허용했기 때문에 자격을 제거 할 수 있음을 의미했습니다.
private HashMap<String, String> anyStringStringHashMap() {
return Matchers.any();
}
원하는 경우 억제 경고를 추가하여 캐스트 할 수 있습니다.
@SuppressWarnings("unchecked")
AsyncCallback<ResponseX> callback = Mockito.any(AsyncCallback.class)
Java가 '일반적인'제네릭을 허용하면 다음과 같은 방법을 사용할 수 있습니다.
private static <T, E> T<E> mock(Class<T<E>> clazz)
참고 URL : https://stackoverflow.com/questions/7917635/mockito-any-pass-interface-with-generics
'Programing' 카테고리의 다른 글
symfony2의 컨트롤러에서 parameters.yml을 어떻게 읽습니까? (0) | 2020.06.21 |
---|---|
신속한 사전 : 값을 배열로 가져옵니다 (0) | 2020.06.21 |
bash에서 (공백이 아닌) 코드 줄 수 (0) | 2020.06.21 |
IIS에서 요청 시간 초과를 늘리는 방법은 무엇입니까? (0) | 2020.06.21 |
다른 파일 A에서 파일 B에 나타나는 줄을 제거하는 방법? (0) | 2020.06.21 |