java - Junit - 测试对 obj.wait() 的调用

标签 java junit mockito wait powermock

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

关于java - Junit - 测试对 obj.wait() 的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18939130/

相关文章:

unit-testing - 如何使用Inorder验证调用顺序并返回值?

java - 方法忽略异常返回值: FindBugs

java - 使用 Unitils 针对 Postgres 数据库运行单元测试时出现 NullPointerException

java - 如何在 JUnit+Spring 测试中 Autowiring 并注入(inject)一次对象?

java - CLI 中的 JUnit 测试等效项

Java 问题 - 获取与 Mockito 相关的错误

java - 如何使用java程序读取任务管理器列表

java - 如何使用 Spring Boot 读取多部分?

java - 在 Maven 项目中使用 SWTBot

android - Mvvm协程Mockito测试ViewModel给出错误