首页 > 解决方案 > Mockito:等待存根完成

问题描述

我正在构建一个弹簧集成测试。在这个测试中,我像这样使用 mockito:

@MockBean
A mockA;

public void test(){
    when(mockA.a()).thenReturn(1).thenReturn(2);
    // Do stuff...
}

现在,在另一个线程上有另一个 bean,它不断调用 mockA.a()。

结果是一个竞争条件,有时a() 会返回 1 两次。想一想,还是挺有道理的——另一个bean很快,在测试线程到达thenReturn(2)之前成功调用了两次a()。

有没有一种好方法可以让 Mockito 在开始返回值之前等待存根完成?

或者您能想到的任何其他不错的解决方案?

我不想使用sleep,因为它很难看...

编辑: 对 mockA 的调用来自另一个使用“A”bean 的 bean。例如:

public class B{
    @Autowired
    A a;

    @PostConstruct
    public void method(){ // This method will
        System.out.println(a.a());
    }
}

标签: springmultithreadingunit-testingmockitointegration-testing

解决方案


推荐阅读