简短结论:java.lang.Assert(即 assert 关键字)不适合用于单元测试。单元测试中应当使用测试框架提供的断言(如 JUnit/TestNG 的 Assert、AssertJ、Hamcrest 等)。
下面详细解释原因和区别。
assert 是什么Java 的 assert 是语言级别的断言:
assert x > 0 : "x must be positive";
特点:
-ea(enable assertions)才生效AssertionError单元测试依赖“失败即报错”,但:
-ea 时,assert 直接被忽略assert list.size() == 3;
失败只告诉你:
java.lang.AssertionError
没有期望值 / 实际值对比。
测试框架断言失败会:
assert 失败直接抛 Error,流程控制不友好。
单元测试强调可读性,例如:
assertEquals(3, list.size());
assertThat(list).hasSize(3);
比:
assert list.size() == 3;
更清晰、可维护。
@Test
void test() {
assertEquals(3, list.size());
assertTrue(list.contains("a"));
}
assertThat(list)
.hasSize(3)
.contains("a");
Assert.assertEquals(actual, expected);
assert 适合用在哪?✅ 适合:
示例:
void process(int x) {
assert x >= 0 : "x should not be negative";
}
❌ 不适合:
IllegalArgumentException)单元测试请用测试框架的断言,
assert只是调试工具,不是测试工具。
如果你愿意,我也可以对比 JUnit Assert、AssertJ、Hamcrest 的写法差异。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。