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