Подтвердить что ты не робот

Как использовать assert в android?

Я хочу использовать assert obj != null : "object cannot be null" на Android-устройстве. Утверждение, похоже, не работает, поэтому я искал в Интернете, и я нашел это локальное решение:

adb shell setprop debug.assert 1

он работает на моей локальной машине.

Я хочу запустить эту команду с помощью моего проекта eclipse (поэтому он будет в исходном элементе управления). Как я могу это сделать?

Спасибо!

4b9b3361

Ответ 1

Assert не будет работать в Android, потому что большую часть времени человек не работает в режиме отладки, а скорее некоторый оптимизированный код. Таким образом, правильное решение состоит в том, чтобы вручную генерировать исключение, с таким кодом:

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

Следует отметить, что по дизайну Asserts предназначены для кода отладки, а не для кода времени выпуска. Таким образом, это может быть не лучшим использованием броска Assert. Но так вы можете это сделать, поэтому...

Ответ 2

Протестировано на устройстве Android 4.x, можно использовать Java assert на устройстве Android:

  • Изменить /system/build.prop(например, X-plore), добавить строку в конец файла: debug.assert = 1
  • Перезагрузите телефон

Теперь ваше Android-устройство разумно утверждать проверки и будет вызывать AssertionError, если ошибка проверки assert.

EDIT:

Еще один простой подход, позволяющий утверждать с ПК до перезапуска устройства:

platform-tools\adb shell setprop debug.assert 1

Вы можете, например, создать файл .bat(в Windows) и запустить его, когда устройство подключено.

Ответ 3

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

Замените RuntimeException() соответствующим подтипом исключения.

Ответ 4

Создайте свой собственный метод assert:

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

Возвращение одного и того же объекта позволяет использовать это в назначениях для краткости.

Ответ 5

Разделяя мой класс, который я использую для утверждений на Android, его более простой, имеет приятное имя и очень элегантно, потому что он позволяет писать такие утверждения:

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

Здесь код для класса:

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

Надеюсь, что это поможет!