OCP Java SE 6程序员实践考试的正确答案之一是:
您可以通过编程方式测试已启用的断言 没有抛出
AssertionError
。
我该怎么做?
答案 0 :(得分:26)
我用这个
boolean assertOn = false;
// *assigns* true if assertions are on.
assert assertOn = true;
我不确定这是“官方”方式。
答案 1 :(得分:21)
我猜你应该使用Class.desiredAssertionStatus()
http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html#desiredAssertionStatus()
答案 2 :(得分:16)
Oracle Java Tutorial提供了有关如何操作的信息......
http://docs.oracle.com/javase/7/docs/technotes/guides/language/assert.html
教程摘录
7。为什么不提供一个构造来查询包含类的断言状态?
这样的结构会鼓励人们内联复杂的断言 代码,我们认为这是一件坏事。此外,它是直截了当的 如果您认为必须,请查询当前API顶部的断言状态:
boolean assertsEnabled = false; assert assertsEnabled = true; // Intentional side-effect!!! // Now assertsEnabled is set to the correct value
答案 3 :(得分:2)
RuntimeMXBean mx = ManagementFactory.getRuntimeMXBean();
boolean assertionsEnabled = mx.getInputArguments().contains("-ea");
答案 4 :(得分:0)
package io.github.baijifeilong.tmp;
import io.vavr.control.Try;
/**
* Created by BaiJiFeiLong@gmail.com at 2019-04-18 09:12
*/
public class TmpApp {
public static void main(String[] args) {
Try.run(() -> {
assert false;
}).onSuccess($ -> {
throw new RuntimeException("Assertion is not enabled");
});
}
}
也许可以帮助某人。
答案 5 :(得分:0)
我正在使用jdk.nashorn.internal中的AssertsEnabled。
System.out.println(AssertsEnabled.assertsEnabled());
// "assertsEnabled()" returns boolean value
也许可以帮助某人。