gpt4 book ai didi

java - 如何为 "InterruptedException"编写单元测试

转载 作者:搜寻专家 更新时间:2023-10-30 20:59:29 24 4
gpt4 key购买 nike

在尝试 100% 的代码覆盖率时,我遇到了一种情况,我需要对捕获 InterruptedException 的代码块进行单元测试。如何正确地对此进行单元测试? (请使用 JUnit 4 语法)

private final LinkedBlockingQueue<ExampleMessage> m_Queue;  

public void addMessage(ExampleMessage hm) {
if( hm!=null){
try {
m_Queue.put(hm);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

最佳答案

在调用 addMessage() 之前,调用 Thread.currentThread().interrupt()。这将在线程上设置“中断”状态标志。

如果在 LinkedBlockingQueue 上调用 put() 时设置了中断状态,则会引发 InterruptedException,即使如果 put 不需要等待(锁未竞争)。

顺便说一下,一些达到 100% 覆盖率的努力会适得其反,实际上会降低代码质量。

关于java - 如何为 "InterruptedException"编写单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3704747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com