Android上的断言是否可用?我有:
assert(null);
它什么也没做,我处于调试模式。
答案 0 :(得分:15)
是的,它们可用。
默认情况下,它们在模拟器中被禁用。您需要在用于运行应用程序的运行配置中将-shell -prop debug.assert=1
命令行参数添加到其他仿真器命令行选项。
您应该注意的另一件事是您在设备上安装的应用程序不会考虑断言 - 它们将被忽略。
答案 1 :(得分:0)
目前eclipse建议如下:
断言是不可靠的。改为使用BuildConfig.DEBUG条件检查。
问题说明:
在运行时不检查断言。有多种方法可以请求Dalvik使用它们(adb shell setprop debug.assert 1),但是在许多地方都忽略了该属性,并且不能依赖它。相反,如果(BuildConfig.DEBUG){}阻止,则在内部执行条件检查。该常量是一个静态最终布尔值,在调试版本中为true,在发布版本中为false,Java编译器从应用程序中完全删除if-body中的所有代码。
例如,您可以替换
assert speed > 0
带
if (BuildConfig.DEBUG && !(speed > 0)) { throw new AssertionError(); }
(注意:此lint检查不会标记断言纯粹断言nullness或非null;这些断言通常更多地用于工具使用而不是运行时检查。)
更多信息:[Issue 65183: Intellij/Studio doesn't activate asserts when running Android code in debug mode]确定
答案 2 :(得分:-2)
你可以使用Android JUnit Assert:
Assert.assertTrue(false);