我正在尝试编写一个 junit 来测试我的代码中 java 监视器的使用。有没有办法断言在特定对象上调用了 wait()。我尝试了obj和mockito间谍的不同组合来部分存根它,但它要么抛出IllegalMonitorStateException,要么只是继续等待而不是捕获方法调用。
public void waitTest(){
RWLock lock= new RWLock();
RWLock lockSpy = spy(lock);
lock.lockRead();
synchronized (lockSpy) {
verify(lockSpy).wait();
}
}
class RWLock{
public synchronized void lockRead(){
wait();
}
}
我真的很感激我能得到的任何帮助。谢谢!
你的问题是wait()
是最终的。 Mockito无法验证最终方法。