Я видел много сумасшедших способов получить доступ к закрытым переменным при модульном тестировании. Самое умопомрачительное, что я видел, это #define private public.
Однако я никогда не видел, чтобы кто-то предлагал отключить частные переменные на уровне компилятора. Я всегда просто предполагал, что ты не можешь. Я жаловался многим разработчикам, что модульное тестирование было бы намного проще, если бы вы могли просто сказать компилятору отступить для этого одного файла.
Затем я натыкаюсь на параметр компилятора -fno-access-control GCC. Очевидно, что это идеальный способ модульного тестирования. Ваши оригинальные исходные файлы не изменены, нет добавленных друзей только для модульного теста, нет перекомпиляции с причудливой магией препроцессора. Просто нажмите переключатель «нет контроля доступа» при компиляции модульных тестов.
Я что-то упускаю? Я надеюсь, что это модульное тестирование серебряной пули?
Единственный недостаток, который я вижу, - это специфичный для GCC характер метода. Однако я предполагаю, что MSVS имеет аналогичный флаг.
-fno-access-controlне работает с частным/защищенным наследованием. Я застрял с#defines. - person Xeverous   schedule 18.01.2018