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

如何让Awaitility超时返回包含集合内容的有意义错误信息?

实现带集合动态内容的超时错误提示

想要在条件超时后得到包含集合实际内容的错误信息,仅使用alias()方法无法实现动态内容注入,需要通过自定义条件逻辑来实现:

方法一:自定义Condition接口实现

通过实现Condition接口,在describeFailure()方法中动态生成包含集合当前状态的错误描述:

Set<String> set = new HashSet<>();
await().until(new Condition<Boolean>() {
    @Override
    public Boolean get() {
        return set.contains("foo");
    }

    @Override
    public String describeFailure() {
        return "'foo' should be in set=" + set;
    }
});

当条件超时未满足时,会输出类似以下的错误信息:

Condition 'foo' should be in set=[bar] not fulfilled

方法二:结合lambda与异常抛出

在lambda表达式中直接判断条件,不满足时抛出包含集合内容的断言异常:

Set<String> set = new HashSet<>();
await().until(() -> {
    boolean isContained = set.contains("foo");
    if (!isContained) {
        throw new AssertionError("'foo' should be in set=" + set);
    }
    return isContained;
});

这种方式会在条件不满足时直接抛出包含集合当前内容的异常,超时后也会捕获并展示该错误信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 20:42:34