Prueba de unidad Robolectric de Android para Marshmallow PermissionHelper
Quiero aprender Robolectric para usarlo para pruebas unitarias en una aplicación Android Marshmallow. Yo escribi unPermissionHelper
con algunos métodos para facilitar el manejo de permisos. Para comenzar con las pruebas unitarias para esta clase, estoy tratando de probar el método más simple:
public static boolean hasPermissions(Activity activity, String[] permissions) {
for (String permission : permissions) {
int status = ActivityCompat.checkSelfPermission(activity, permission);
if (status == PackageManager.PERMISSION_DENIED) {
return false;
}
}
return true;
}
Aquí está la prueba Robolectric que escribí hasta ahora:
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class)
public class PermissionHelperTest {
private PermissionHelper permissionHelper;
private ShadowApplication application;
@Before
public void setup() {
PictureActivity activity = Robolectric.buildActivity(PictureActivity.class).get();
permissionHelper = new PermissionHelper(activity, activity, 1);
application = new ShadowApplication();
}
@Test
public void testHasPermission() throws Exception {
String[] permissions = new String[]{Manifest.permission.RECORD_AUDIO, Manifest.permission.WRITE_EXTERNAL_STORAGE};
boolean hasPermissions = permissionHelper.hasPermissions(permissions);
Assert.assertEquals(false, hasPermissions);
application.grantPermissions(permissions);
hasPermissions = permissionHelper.hasPermissions(permissions);
Assert.assertEquals(true, hasPermissions);
}
}
El primer Assert funciona (sin permiso otorgado). Pero después de otorgar todos los permisos a través de ShadowApplication, todavía se les niega en el próximo Assert.
Yo creo que elPictureActivity
creado conRobolectric.buildActivity()
no está utilizando ShadowApplication para las verificaciones de permisos. PeroPictureActivity.getApplication()
no me da unShadowApplication
llamargrantPermissions
en. ¿Cómo puedo probar esto?
Soy nuevo en Robolectric y pruebas unitarias en Android ... así que si hay algún otro marco que lo haga más fácil / posible: estoy abierto a sugerencias.