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

如何用Awaitility验证等待期间指定方法未被调用?

使用Awaitility验证等待期间方法未被调用的正确方式

你当前的写法确实和Thread.sleep()没本质区别——只是单纯等待10秒后做一次断言,没有利用Awaitility的轮询验证能力。

正确的做法是把Mockito的never()验证逻辑放到Awaitility的untilAsserted()中,让它在等待周期内反复检查:

@Test
void testThatSomeMethodWasntCalled() {
    await().atMost(10, TimeUnit.SECONDS).untilAsserted(() -> {
        verify(someClass, never()).someMethod();
    });
}

这种写法会让Awaitility按照默认间隔(100ms)持续执行断言:

  • 如果在任意一次轮询中发现someMethod被调用,测试会立刻失败,不用等满10秒;
  • 只有等到超时时间结束,所有轮询的断言都通过,才会判定测试通过。

如果需要调整轮询频率,还可以自定义间隔:

@Test
void testThatSomeMethodWasntCalled() {
    await().pollInterval(500, TimeUnit.MILLISECONDS)
           .atMost(10, TimeUnit.SECONDS)
           .untilAsserted(() -> {
               verify(someClass, never()).someMethod();
           });
}

核心逻辑就是让Awaitility持续验证“方法从未被调用”这个条件,而不是只在等待结束后做一次性检查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:40:29