1

我正在尝试编写一个 junit 来测试我的代码中 java 监视器的使用。有没有一种方法可以断言已在特定对象上调用了 wait()。我尝试了 obj 和 mockito spy 的不同组合来部分存根它,但它要么抛出 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();
    }
}

我真的很感激我能得到的任何帮助。谢谢!

4

1 回答 1

2

你的问题是那wait()是最终的。Mockito 无法验证最终方法。

于 2013-09-22T00:41:02.243 回答