Чем полезен Gtest для тестирования кода на C? Можно ли проверить препроцессор между кодами в модульном тесте gtest? - PullRequest
0 голосов
/ 12 ноября 2018

Я новичок в gtest unit test, подскажите, пожалуйста, как начать с приведенной ниже программы

FUNC()
    {
        int errorId =1;
        if(!Func1())
        {
            error = True;
        }
        else
        {
            Func2(FALSE); 
        }
        /* Can i able to perform unit test for below line ? */
        #if(ERROR_REPORT == ON)
        if(errorId != NO_ERROR)
        {
            ReportError(ID, errorId);
        }
        #endif
    }

1 Ответ

0 голосов
/ 13 ноября 2018
#if(ERROR_REPORT == ON)
//...
#endif

Является, как вы правильно сказали, командой препроцессора (в результате чего промежуточный текст компилируется только в том случае, если ON определено для *1003* во время компиляции.

You может провести модульное тестирование этого кода: создайте заглушку / макет для ReportError() (вам может понадобиться применить внедрение зависимостей или подобное для вставки заглушки / макета - существует множество хороших фреймворков иучебники для этого в Интернете, например, gmock ) и либо создайте два тестовых класса (один, который определяет ERROR_REPORT до ON, а другой - нет), либо дважды скомпилируйте весь исполняемый файл теста (один сERROR_REPORT определено ON) и ваши ожидаемые результаты испытаний также зависят от значения ERROR_REPORT.

...