Статическая функция "ложная / ложная" в тестовой среде
Я использую cpputes t для выполнения модульных тестов кода c.
В тестируемом исходном коде у меня есть статическая функция, которую я хотел бы перенаправить на "фальшивую" версию функции при вызове из среды модульного тестирования.
Допустим, у меня есть что-то вроде этого:
Исходный код тестируется:
void my_main()
{
read(int8 address);
}
согласно которому;
static int8 read(int8 address)
{
return something;
}
Среда модульного тестирования:
TEST(MY_TESTS, READ)
{
my_main();
}
При вызове my_main() в среде Unit Test я бы хотел перенаправить вызов
читать (адрес int8), чтобы:
int8 fake_read(int8 address)
{
//do_something
}
Что будет здесь правильным путем? Я пробовал это уже с указателем на функцию, чем внедрение зависимости, но это не работает. Любая идея?
2 ответа
Возможно, вы можете использовать компоновщик для этого: создайте два исходных файла - один с реальным рабочим кодом статической функции, а другой с фиктивной реализацией.
Для теста, ссылка 2-го; и для запуска вашего приложения 1-го.
Древний вопрос, я знаю, но...
Посмотрите на документы вокруг
mock_c()
http://cpputest.github.io/mocking_manual.html#other_mock_support
int64_t GetTimeMS (void)
{
mock_c ()->actualCall ("GetTimeMS");
return (mock_c ()->returnValue ().value.longIntValue);
}