Есть ли способ модульного тестирования кода, который зависит от констант?
Рассматриваемая здесь константа на самом деле 0
или 10
. const int my_const
не является константой C.
если возможно запустить тестовый пример для my_const = 0
и my_const = 10
в одном и том же тесте. без необходимости запускать более одного (?)
Я бы сказал нет - не для хорошего теста.
Представьте себе компилятор, который берет my_const = 0
и помещает этот объект в том же глобальном месте, что и все другие объекты с нулевой инициализацией по умолчанию. Тот же компилятор может с помощью my_const = 10
поместить объект в другой раздел глобальных объектов, требующих ненулевой инициализации. Простое изменение константы 0
на 10
может значительно повлиять на адрес объекта по сравнению с другими, не говоря уже о его значении. Интересно Унаследованный код может зависеть от последовательности адресов, значений или других эффектов пульсации, которые трудно различить.
Я бы сделал что-то вроде ниже и передал компилятору определение для TEN_OR_ZERO
, возможно с дефолтом. Затем скомпилируйте / запустите, скомпилируйте / запустите.
#ifndef TEN_OR_ZERO
#define TEN_OR_ZERO 0
#endif
const int my_const = TEN_OR_ZERO;