Olá,
Onde eu trabalho não temos o costume de escrever testes unitários. Frequentemente, quando alguém sugere escrever um teste, respondemos "isso não dá pra testar".
Resolvi mudar isso e passar a escrever testes para as classes que eu desenvolver daqui pra frente. Mas a primeira classe que tive que fazer foi essa mostrada abaixo, que, sinceramente, não consegui escrever um teste unitário para ela.
Só para contextualizar, a classe serve para pedir ao usuário permissão para usar algum recurso do sistema em um aplicativo Android. Omiti imports e javadoc.
public final class PermissionChecker {
public static void askPermission(int requestCode, Activity activity, String permission) {
ActivityCompat.OnRequestPermissionsResultCallback callback = (ActivityCompat.OnRequestPermissionsResultCallback) activity;
// If already has permission (second time called), invoke callback the same way Android system would do.
if (ContextCompat.checkSelfPermission(activity, permission) == PackageManager.PERMISSION_GRANTED) {
callback.onRequestPermissionsResult(requestCode, new String[]{permission}, new int[]{PackageManager.PERMISSION_GRANTED});
return;
}
// If it's the first call, ask permission for Android system, which will invoke callback asynchronously.
ActivityCompat.requestPermissions(activity, new String[]{permission}, requestCode);
}
public static boolean isGranted(int[] grantResults) {
return (grantResults[0] == PackageManager.PERMISSION_GRANTED);
}
}
Gostaria de testar principalmente o método askPermission. Ele só tem 5 linhas de código, mas tem chamadas a métodos estáticos e coisas acontecendo de modo assíncrono.
Como eu faço para testar isso?