Я проверяю static
функции следующим образом.
У меня есть заголовочный файл с именем utility.h
. Имеет следующее определение:
#ifdef UNIT_TEST
#define UTILITY_STATIC(DECLARATION) extern DECLARATION; DECLARATION
#else
#define UTILITY_STATIC(DECLARATION) static DECLARATION
#endif
Каждый исходный файл, имеющий функции, которые должны быть протестированы, объявляется так:
#include "utility.h"
UTILITY_STATIC(void function(void));
UTILITY_STATIC(void function(void))
{
}
У меня есть дополнительный файл заголовка (например, test_helper.h
), используемый в исполняемом модульном тесте, который имеет строку:
extern void function(void);
Таким образом, у тестов есть доступ к function
, тогда как у исходных файлов, которые не define
UNIT_TEST
, нет.
Примечание
Это можно использовать и для static
переменных.