Использование try-catch
в тестовом коде не является проблемой как таковой.Фактически, вам даже нужно сделать это, если в тестовом коде вы хотите проверить, генерирует ли тестируемая система (SUT) ожидаемое ожидание.
Однако ваш конкретный пример делает некоторые вещи втестовый код, который имеет неблагоприятные последствия.Во-первых, ваш тестовый код объединяет тесты для двух разных аспектов (сценарий успеха и сценарий сбоя) в одну функцию тестирования.Одним из недостатков является то, что это усложняет тестовый код и порой затрудняет понимание того, какая часть установки необходима для какого теста.Вы использовали try-catch
для слияния тестов, но проблема не в try-catch
, а в слиянии.
И, фактически, это слияние фактически привело вас в ловушку: ваши объединенные тесты не работаютдолжным образом.Например, вы выбираете id
случайным образом.Значение id
из 1 должно привести к правильной доставке user
.Однако вы на самом деле не проверяете это: если ваше SUT по ошибке всегда выдает исключение, вы будете считать это успешным тестом.
Во-вторых, вы выполняете 1000 тестов, но эффективно только тестдва сценария (аспекты).Поэтому 1000 тестов ничего не покупают.Скорее наоборот: слишком сложное может даже означать, что вы по ошибке (из-за ошибки в выборе сценария) не тестируете оба сценария.Или, что по стечению обстоятельств всегда выбирается один сценарий (маловероятно, допущен).В любом случае вы тратите время на выполнение 1000 тестов для эффективного значения только 2 протестированных аспектов.