java android assert

java - ¿Cómo usar assert en Android?



(6)

Quiero usar assert obj != null : "object cannot be null" en el dispositivo Android. La afirmación no parece funcionar, así que busqué en línea y encontré esta solución local:

adb shell setprop debug.assert 1

funciona en mi máquina local.

Quiero ejecutar este comando usando mi proyecto de eclipse (por lo que estaría en el control de fuente). ¿Cómo puedo hacerlo?

¡Gracias!


Assert no funcionará en Android porque la mayoría de las veces una persona no se está ejecutando en modo de depuración, sino que se trata de un código optimizado. Por lo tanto, la solución adecuada es lanzar manualmente una excepción, con un código como este:

if (obj==null) throw new AssertionError("Object cannot be null");

Cabe señalar que, por diseño, los Asserts están destinados a código de depuración, y no a código de tiempo de lanzamiento. Así que este podría no ser el mejor uso de tirar un Assert. Pero así es como puedes hacerlo, así que ...


Compartir mi clase que utilizo para afirmaciones en Android, es más simple, tiene un buen nombre y es muy elegante porque te permite escribir aseveraciones como esta:

Assert.that(obj!=null, "Object should not be null");

Aquí está el código para la clase:

public class Assert { public static void that(boolean condition, String message) { if (!condition) { throw new AssertionError(message); } } }

¡Espero eso ayude!


Crea tu propio método assert:

public static <T> T assertNotNull(T object) { if (object == null) throw new AssertionError("Object cannot be null"); return object; }

Devolver el mismo objeto permite usar esto en asignaciones por brevedad.


Para hacer que assertion esté disponible en Java Virtual Machine, use - enableassertions o - ea opciones de línea de comandos

  • en el indicador de comandos de Windows,

    java -ea YourApp

  • en Android Studio 3.0, en Herramientas / Editar configuraciones / Opciones de VM , entrada - enableassertions o - ea

Probado en el dispositivo Android 4.x, es posible usar Java assert en un dispositivo Android:

  • Edite /system/build.prop (por ejemplo, por X-plore ), agregue la línea al final del archivo: debug.assert = 1
  • Reinicia el teléfono

Ahora su dispositivo Android es sensato para hacer comprobaciones y lanzará AssertionError cuando falle la comprobación de afirmación.

EDITAR:

Otro enfoque fácil, que habilita las afirmaciones desde la PC hasta que se reinicie el dispositivo:

platform-tools/adb shell setprop debug.assert 1

Por ejemplo, puede crear un archivo .bat (en Windows) y ejecutarlo cuando el dispositivo esté conectado.


if (somevar == null) throw new RuntimeException();

Reemplace RuntimeException () con un subtipo de excepción apropiado.