CPPUnit доступ определяет в c файлах - PullRequest
0 голосов
/ 09 марта 2011

Я делаю какой-то модульный тест на коде c, используя CPPUnit.

В тестируемом коде есть некоторые определения в файлах c, а не в файлах h. Таким образом, они не доступны из других мест в коде. Многие из определений используются для установки размера массивов.

Когда я делаю модульные тесты, я хотел бы сделать их настолько динамичными, насколько это возможно, означая, что они все еще будут работать, когда определения будут изменены до окончательного выпуска. Я сделал несколько циклов и прочее, чтобы пройти через функции с использованием массивов, чтобы я тестировал столько раз, сколько есть записей в массиве и т. Д. Но до сих пор я использую копию определения в своем коде модульного теста. Таким образом, если определения изменяются в коде для тестирования, то они не изменяются в коде модульного теста.

Итак, мой главный вопрос: есть ли какая-то хитрость, которую нужно использовать только для целей модульного тестирования, чтобы каким-то образом сделать определения глобальными или что-то в этом роде, не меняя исходный код, чтобы он соответствовал использованию модульного тестирования. Может быть, настройка компилятора? (Я использую Visual Studio 2008).

1 Ответ

0 голосов
/ 09 марта 2011

Нет, вы не можете сделать #define в файле .c «глобальным», чтобы он применялся к другим файлам C, так же как вы не можете сделать статическую функцию глобальной без изменения источника. Способ сделать это состоит в том, чтобы изменить источник, чтобы поместить эти #define s, где они принадлежат, в заголовочные файлы, которые определяют интерфейсы.

=== edit ===

благодарность Radek S за идею #include использования файла .c. Это имеет ограниченную применимость, но должно работать для модульных тестов функций в этом одном файле, при условии, что исходный файл не компилируется при создании исполняемого файла теста.

...