Задать вопрос

Как спровоцировать RuntimeException в строчке "double weight = 1.0;"?

Имеется следующий метод:
public static double weight(Some input params) {
	double weight = 0.0;
	try {
		weight = 1.0;
	} catch(RuntimeException error) {
		// some error handling logic here
		weight = 0.0;
	} 
	return weight;
}


Позволю себе оставить за кадром, почему блок try за время жизни проекта выродился в одну строчку, скажу лишь что имеется набор классов с шаблонной реализацией этого метода в виде «try {} catch {}» и стоит задача протестировать код внутри catch блока.


Потому собственно и вопрос, можно ли это сделать не меняя кода метода?
  • Вопрос задан
  • 2936 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
Mezomish
@Mezomish
Я тоже не особо понимаю в чём проблема. Поставьте принудительное throw new RuntimeException();, протестируйте логику обработки, после чего уберите принудительное выбрасывания исключения.

Ну а если хотите совсем уж «офигенно и ынтырпрайзно», то замените «weight = 1.0;» на «weight = _dataProvider.getWeightData()», где в «обычном» режиме _dataProvider является инстансом «правильного» класса (возвращающего нормальные данные), а в тестовом режиме — инстансом специального тестового класса, наследующего тот же интерфейс, но вместо нормальных данных кидающего исключения.

Только осторожнее с этим, не придите в конечном итоге к "фабрике фабрик фабрик инструментов" :D
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@jorikburlakov
Честно говоря непонятно в чем вопрос? В чем проблема?
Ответ написан
Комментировать
agladkov
@agladkov
Может поменять локализацию?
Ответ написан
barker
@barker
Я так в итоге понял, что это какая-то загадка типа «не меняя ни одного символа сделать так, чтобы код падал». Надо было это более явно обозначить тогда, а то люди не понимают.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы