Mockito.any () passa all’interfaccia con Generics

è ansible passare il tipo di interfaccia con generici?

L’interfaccia:

public interface AsyncCallback 

Nel mio metodo di prova:

 Mockito.any(AsyncCallback.class) 

Mettere dietro o per .class funzionato.

Esiste un metodo sicuro per il tipo: utilizzare ArgumentMatchers.any() e qualificarlo con il tipo:

 ArgumentMatchers.>any() 

come pierrefevrier menzionato nei commenti, con le nuove versioni di Mockito è

 Matchers.>any() 

Usando Java 8, puoi semplicemente usare any() (assumendo un’importazione statica) senza parametro o parametro type a causa di un’inferenza di tipo avanzata. Il compilatore ora sa dal tipo di destinazione (il tipo dell’argomento del metodo) che in realtà si intende Matchers.>any() , che è la soluzione pre-Java 8.

Ho dovuto adottare il seguente meccanismo per consentire i generici:

 import static org.mockito.Matchers.any; List list = any(); when(callMyMethod.getResult(list)).thenReturn(myResultString); 

Spero che questo aiuti qualcuno.

Pubblicando commenti pierrefevrier come risposta che potrebbe essere utile se presente in una risposta anziché in commenti.

Con le nuove versioni di Mockito: (Matchers.>any()

Oltre alla risposta di thSoft, la chiamata qualificata a any () nel metodo significava che potevo rimuovere la qualifica dal tipo di inferenza permessa dal tipo restituito:

 private HashMap anyStringStringHashMap() { return Matchers.any(); } 

Puoi semplicemente lanciarlo, aggiungendo gli avvisi di soppressione se ti piace:

 @SuppressWarnings("unchecked") AsyncCallback callback = Mockito.any(AsyncCallback.class) 

Se Java permettesse generici “generici”, potrebbero avere un metodo come questo che è quello che stai cercando

 private static  T mock(Class> clazz)