Je veux utiliser assert obj != null : "object cannot be null"
sur Android. L'assertion ne semble pas fonctionner, j'ai donc cherché en ligne et j'ai trouvé cette solution locale:
adb Shell setprop debug.assert 1
cela fonctionne sur ma machine locale.
Je veux exécuter cette commande en utilisant mon projet Eclipse (donc ce serait dans le contrôle de source). Comment puis-je le faire?
Merci!
Assert ne fonctionnera pas en Android car la plupart du temps une personne ne s'exécute pas en mode débogage, mais plutôt du code optimisé. Ainsi, la bonne solution est de lever manuellement une exception, avec code comme celui-ci:
if (obj==null) throw new AssertionError("Object cannot be null");
Il convient de noter que par conception, les assertions sont destinées au code de débogage et non au code temporel de publication. Donc, ce n'est peut-être pas la meilleure façon de lancer un Assert. Mais c'est comme ça que vous pouvez encore le faire, alors ...
Testé sur Android 4.x, il est possible d'utiliser Java assert sur Android:
Maintenant, votre appareil Android est sensé pour affirmer les vérifications et lancera AssertionError lorsque la vérification des assertions échoue.
MODIFIER:
Une autre approche simple, permettant les assertions à partir du PC jusqu'au redémarrage de l'appareil:
platform-tools\adb Shell setprop debug.assert 1
Vous pouvez par exemple créer un fichier .bat (sous Windows) et l'exécuter lorsque l'appareil est connecté.
Créez votre propre méthode d'assertion:
public static <T> T assertNotNull(T object) {
if (object == null)
throw new AssertionError("Object cannot be null");
return object;
}
Le retour du même objet permet de l'utiliser dans des affectations pour plus de brièveté.
if (somevar == null) throw new RuntimeException();
Remplacez RuntimeException () par un sous-type d'exception approprié.
Partager ma classe que j'utilise pour les assertions sur Android, c'est plus simple, a un joli nom et très élégant car il vous permet d'écrire des assertions comme ceci:
Assert.that(obj!=null, "Object should not be null");
Voici le code de la classe:
public class Assert {
public static void that(boolean condition, String message) {
if (!condition) {
throw new AssertionError(message);
}
}
}
J'espère que ça aide!
Pour rendre l'assertion disponible dans Java Virtual Machine, en utilisant - enableassertions or --- ea options de ligne de commande
Java –ea YourApp