Cómo probar la unidad de Android y simular un método estático

Hola, realmente espero que me puedan ayudar, siento que me he arrancado el pelo durante días.

Estoy tratando de escribir pruebas unitarias para un método A. El método A llama a un método estático B. Quiero burlarme del método estático B.

Sé que esto se ha preguntado antes, pero creo que Android ha madurado desde entonces, y debe haber una manera de hacer una tarea tan simple sin volver a escribir los métodos que quiero probar.

Aquí hay un ejemplo, primero el método que quiero probar:

public String getUserName(Context context, HelperUtils helper) {
    if(helper == null){
        helper = new HelperUtils();
    }
    int currentUserId = helper.fetchUsernameFromInternet(context);

    if (currentUserId == 1) {
        return "Bob";
    } else {
        return "Unknown";
    }
}

A continuación, el método estático que quiero burlarme:

public class HelperUtils {
    public static int fetchUsernameFromInternet(Context context) {
        int userid = 0;

        Log.i("HelperUtils ", "hello");

        return userid;
    }
}

En otros idiomas esto es muy fácil, pero no puedo hacer que funcione en Android. He probado Mockito, pero parece que los métodos estáticos no son compatibles.

HelperUtils helper = Mockito.mock(HelperUtils.class);
Mockito.when(helper.fetchUsernameFromInternet(getContext())).thenReturn(1);

Este errores

org.mockito.exceptions.misusing.MissingMethodInvocationException

Probé Powermock pero no estoy completamente seguro de que sea compatible con Android. Logré ejecutar powermock usando androidCompile en mi archivo gradle pero recibo este error:

Error: Error de ejecución para la tarea ': aplicación: dexDebugAndroidTest'. com.android.ide.common.process.ProcessException:

Por no mencionarPowerMockito.mockStatic(HelperUtils.class); ¡No devuelve nada, así que no sé qué pasar a mi método getUsername!

Cualquier ayuda sería muy apreciada.

Respuestas a la pregunta(2)

Su respuesta a la pregunta