You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java8-JUnit5使用assert时出现ArrayList相关异常,是否使用正确?

问题解答

那个ArrayList是测试框架的内部实现,和你的代码无关

你看到的ArrayList.forEach栈帧来自测试框架(比如JUnit)的内部执行逻辑,并非你的代码引入的。

具体原因

测试框架会把所有待执行的测试方法封装成任务,存储在ArrayList这类集合中,再通过forEach遍历执行这些任务。当你的测试方法抛出AssertionError时,异常的栈追踪会完整记录从框架入口到你的代码的调用链路,因此会出现框架内部的ArrayList调用栈。

你的assert使用是正确的

你的断言语法完全符合Java规范:

public class ThisTest {
    @Test
    public void myTest () {
        assert 1==2 : "nope";
    }
}

触发AssertionError是预期结果,说明你已经通过VM参数-ea(启用断言)开启了断言功能(Java默认关闭断言)。

无需在意这个栈帧

这个ArrayList的调用栈属于框架内部逻辑,对你的代码没有任何影响,排查问题时只需关注你自己代码的栈帧(com.blah.ThisTest.myTest(ThisTest.java:8))即可。

内容的提问来源于stack exchange,提问作者DraxDomax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 00:40:44