Я не думаю, что у вас есть чистый способ сделать это с помощью любой структуры макета. Однако я могу предложить вам следующие решения.
Решение 1
Изменить вам код doSomething()
следующим образом:
public void doSomething(){
try
{
doSomethingImpl(); // throws RejectedExecutionException
}
catch (RejectedExecutionException ex)
{
// just add some metrics here, no big action
}
}.
Теперь осуществить испытание для обоих doSomethingImpl()
, который должен бросить исключение и doSomething()
, которые не должны с теми же входными данными и состояния.
Решение 2
Вы ловите код делает что-то, не так ли? Например, звонки log.error()
. Вы можете убедиться, что конкретный вызов действительно произошел и произошел только один раз. Я не помню специфический синтаксис для этого с EasyMock, но с Mockito это очень просто: используйте Mockito.verify()
.
Решение 3 Вы можете использовать PowerMock для проверки того, был вызван конструктор исключения. Это не очень чисто, потому что теоретически вы можете создать экземпляр исключения, но не бросать его, но лучше, чем ничего.
Возможно, вы даже можете объединить эти решения. Однако я считаю, что первое - лучшее.
Что означает u, потому что 'исключение не выбрасывается окончательно' – Abhishek
@Abhishek означает не бросать исключение после улова – michael