Desde o Java 8, você pode usar o anymétodo sem argumento e o argumento type será inferido pelo compilador:
verify(bar).doStuff(any());
Explicação
A novidade no Java 8 é que o tipo de destino de uma expressão será usado para inferir parâmetros de tipo de suas subexpressões. Antes do Java 8, apenas argumentos para métodos eram usados para inferência de parâmetro de tipo (na maioria das vezes).
Nesse caso, o tipo de parâmetro de doStuffserá o tipo de destino any()e o tipo de valor de retorno any()será escolhido para corresponder a esse tipo de argumento.
Esse mecanismo foi adicionado no Java 8 principalmente para poder compilar expressões lambda, mas melhora as inferências de tipo em geral.
Tipos primitivos
Isso não funciona com tipos primitivos, infelizmente:
public interface IBar {
void doPrimitiveStuff(int i);
}
verify(bar).doPrimitiveStuff(any()); // Compiles but throws NullPointerException
verify(bar).doPrimitiveStuff(anyInt()); // This is what you have to do instead
O problema é que o compilador inferirá Integercomo o valor de retorno de any(). O Mockito não estará ciente disso (devido ao apagamento do tipo) e retornará o valor padrão para os tipos de referência, que é null. O tempo de execução tentará desmarcar o valor de retorno chamando o intValuemétodo antes de passá-lo para doStuff, e a exceção será lançada.
anymétodo deveria funcionar. Você não procura respostas para coisas que simplesmente funcionam!