В последние годы я всегда думал, что в Java Reflection широко используется во время модульного тестирования. Поскольку некоторые из переменных/методов, которые необходимо проверить, являются частными, необходимо как-то прочитать их значения. Я всегда думал, что API Reflection также используется для этой цели.Неплохо ли использовать рефлексию в модульном тестировании?
На прошлой неделе мне пришлось протестировать некоторые пакеты и, следовательно, написать некоторые тесты JUnit. Как всегда, я использовал Reflection для доступа к частным полям и методам. Но мой руководитель, который проверил код, был не очень доволен этим и сказал, что API Reflection не предназначен для использования для такого «взлома». Вместо этого он предложил изменить видимость в производственном кодексе.
Действительно ли испорчена практика отражения? Я не могу поверить, что-
Edit: я должен отметить, что я должен был, что все тесты находятся в отдельном пакете под названием тест (так, используя защищенный visibilty например, не было возможным решением тоже)
Каким видом вы занимаетесь с отражением, множеством, попаданием или обоими? – fish
@fish: я использую только для проверки того, установлены ли какие-то определенные значения. – RoflcoptrException
Обычная практика в Java заключается в том, чтобы поместить тесты в один и тот же пакет, чтобы вы могли тестировать классы «закрытый» (по умолчанию). –