java - 如何从 JUnit 线程中断信号量?

标签 java multithreading junit semaphore

我有一个想要测试的方法的实现。

    @Override
public void onMessage(final Message message) {
    try {
        LOG.fine("waiting on semaphore for " + message);
        semaphore.acquire();
        LOG.fine("semaphore acquired for " + message);
        listener.onMessage(message);
        LOG.fine(message + " processed");
    } catch (final InterruptedException e) {
        throw new RuntimeException(e);
    } finally {
        semaphore.release();
    }
}

但是,我不确定如何从 JUnit 测试中装配 InterruptedException。理论上,我可以添加钩子(Hook)来终止它,但这会污染代码库,因为代码仅用于测试,而我想避免这种情况。

最佳答案

你应该模拟信号量。你的伪造信号量应该抛出 InterruptedException

关于java - 如何从 JUnit 线程中断信号量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10872863/

相关文章:

java - Android 的 SQLiteOpenHelper 测试类

java - 为什么 junit 提示缺少 xsl 文件?

java - 通过whennew()的powermock模拟构造函数不适用于匿名类

java - 使用哪个平台可以实现最快的 Neo4j 图遍历?

java - 给定一个 scala 不可变映射,如何在 Java 中插入/删除条目

java - 如何使用 JENA 创建 owl 文件?

c++ - 通过多个线程自行取消/注册观察者

java - pdflatex和java中带空格的文件名

objective-c - 在 Objective-c 中,如果父方法在子方法执行时释放了子方法,会发生什么?

c++ - ZMQ异步,具体是如何工作的?