简短结论:java.lang.Assert / assert 断言不适合作为正式的单元测试或自动化测试手段,更适合用于“开发期内部自检 / 防御性编程”。
下面详细说一下。
assert 是什么Java 的断言是:
assert condition;
assert condition : "错误信息";
例如:
assert list != null : "list must not be null";
关键点:默认是关闭的
必须通过 JVM 参数开启:
java -ea MyClass
# 或
java -enableassertions MyClass
assert 不适合做测试-ea,断言完全不会执行AssertionError 是 Error,不是 Exceptionassert 表达的是:
“这里在逻辑上一定是对的,如果不是,说明程序有 bug”
而不是:
“我要验证这个输入是否返回预期结果”
assert 适合用在哪?✅ 适合:
例如:
assert index >= 0 && index < size : "index out of range";
或:
assert Objects.equals(actual, expected) : "state corrupted";
⚠️ 注意:不能替代参数校验
// 错误用法
assert param != null;
// 正确用法
if (param == null) throw new IllegalArgumentException();
✅ 正式测试推荐:
assertEquals(2, calculator.add(1, 1));
assertThrows(Exception.class, () -> {});
assertThat(user.getName()).isEqualTo("Tom");
这些框架:
Java 的
assert是“程序员对自己写的代码的信任检查”,不是“测试用户对系统的验证工具”。
如果你愿意,我可以:
assert vs JUnit 的对比示例assert、什么时候该抛异常免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。