テストしたいメソッドの実装があります。
@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 をトリガーする方法がわかりません。理論的には、フックを追加してそれを終了させることができますが、それは回避したいテストにのみ使用されるコードでコードベースを汚染します。