Сегодня я больше думал об этом, так что вот еще одна идея.
Если бы я кодировал это в своем собственном проекте, я бы абстрагировал отражение объекта. Я бы создал интерфейс, который определяет контракт для класса, который будет возвращать свойства объекта, а затем создал бы класс, который реализует этот интерфейс, используя отражение для возврата набора свойств. То же самое, что вы, вероятно, делаете.
Но тогда в тестах я бы создал новую реализацию интерфейса, но я бы добавил в нее все необходимые правила, чтобы отфильтровать нежелательные свойства в моих фиктивных объектах. Мой живой код не будет содержать код, необходимый для тестирования.
Мне просто нужно было донести эту идею, просто пытаясь помочь. Удачи!