Мы используем рефлексию для работы с объектами во время выполнения программы.
Наша архитектура не всегда предоставляет доступ к объектам (в некоторых частях приложения нет фабрик, нет реестров объектов, нет синглтонов и пр.) либо не предоставляет интефейса для работы с ними. Но такая необходимость признак не очень хорошей архитектуры.
Если вы хотите тестировать не запуская программу, то рефлексия в принципе и не нужна, только если вы хотите залезть "голыми руками в трансформаторный щиток" и знаете что делаете. Архитектура компонент должна предоставлять вам необходимые интерфейсы для тестирования. Иначе у вас классическая проблема с "testability".
Такая проблема часто возникает когда сначала пишут приложение, а потом думают как бы его протестировать. Но уже поздно. И приходится рефакторить.