Um caso de borda de genéricos estranho com Mockito.when () e inferência de tipo genérico
Eu estou escrevendo um caso de teste que usa umjava.beans.PropertyDescriptor
usando Mockito, e eu quero zombar do comportamento degetPropertyType()
para retornar um arbitrárioClass<?>
objeto (no meu caso,String.class
). Normalmente, eu faria isso apenas invocando:
// we already did an "import static org.mockito.Mockito.*"
when(mockDescriptor.getPropertyType()).thenReturn(String.class);
No entanto, curiosamente, isso não compila:
cannot find symbol method thenReturn(java.lang.Class<java.lang.String>)
Mas quando eu especificar o parâmetro type em vez de depender da inferência:
Mockito.<Class<?>>when(mockDescriptor.getPropertyType()).thenReturn(String.class);
tudo é bonitão. Por que o compilador não pode inferir corretamente o tipo de retorno de when () neste caso? Eu nunca precisei especificar o parâmetro antes disso.