Статическая функция "ложная / ложная" в тестовой среде

Я использую 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);
}
Другие вопросы по тегам