Предполагая, что мы говорим о статических функциях C, тогда самое простое решение — сделать функции нестатическими при компиляции отладочной сборки. Это означает, что символы будут доступны для использования в модульных тестах. Это работает только в том случае, если нет псевдонимов символов.
Если вы определяете символ DEBUG
во всех отладочных сборках, то что-то вроде:
#ifdef DEBUG
#define debug_export
#else
#define debug_export static
#endif
а затем определите свои статические функции, подобные этому
debug_export void foo(void)
{
...
}
и либо включите объявления условно в файл заголовка, либо вручную импортируйте их в файл модульного теста:
extern void foo(void);
Другие способы обойти это — либо включить модульные тесты в сам исходный файл (немного беспорядок, если он выйдет из-под контроля), не беспокоить модульное тестирование функции (немного отговорки) или пометить функцию как dll-local, а не статический, и убедитесь, что ваши модульные тесты являются частью этого динамического объекта.
person
Will
schedule
16.04.2013