Файл заголовка переопределения CppUTest - PullRequest
1 голос
/ 29 мая 2020

Я изучаю модульное тестирование. Я могу просто компилировать программы с Eclipse и CppUTEST. Оно работает. Однако у меня проблема с пониманием того, как переопределить / заглушить файлы заголовков. Я придумал тестовый сценарий,

Мои файлы:

/src:
---------- src.c src.h //native compilator, for example stm-gcc
/test:
---------- AllTests.cpp Test_src.cpp //test compilator, for example gcc
/mocks:
---------- fsrc.h fsrc.c //fake file, should override src.h 

Теоретически в файле «sr c .h» хранятся настройки для собственного компилятора (stm-g cc). Мой тестовый компилятор (g cc) не может использовать эти зависимости, поэтому я должен переопределить / заглушить этот файл заголовка. Поэтому я создаю файл /mocks/fsrc.h. fsr c .h должен иметь приоритет над файлом / stub sr c .h.

Пример кода файлов:

AllTests:

#include "CppUTest/CommandLineTestRunner.h"
#include "CppUTestExt/MockSupport.h"

#include <src/src.h> // -> should read the "fsrc" file instead "src"

int main(int ac, char** av) { return CommandLineTestRunner::RunAllTests(ac, av); }

Test_sr c. cpp

#include "CppUTest/TestHarness.h"
#include <src.h>

class ClassName { int a; };

TEST_GROUP(ClassName)
{
  ClassName* className;

  void setup() { className = new ClassName(); }
  void teardown() { delete className; }
};

TEST(ClassName, Create)
{
  CHECK(0 != className);
  STRCMP_EQUAL(myString, "my_string_from_mock_header"); // --> myString macro should be read from "mocks/fsrc" not from "src/src.h"   
}

mocks / fsr c .h

#ifndef SRC_SRC_H_
#define SRC_SRC_H_

#define myString "mocks/Header"
int fun();

#endif /* SRC_SRC_H_ */

mocks / fsr c. c

#include "fsrc.h"    
int fun() { return 999; }

src / sr c .h

#ifndef SRC_SRC_H_
#define SRC_SRC_H_

#define myString "src/Header"
int fun();

#endif /* SRC_SRC_H_ */

src / sr c. c

#include "src.h"  
int fun() { return 1; }

Eclipse erorr:

'g ++ -I "C: \ cygwin64 \ home \ karb \ cpputest \ include "-O0 -g3 -Wall - c -fmessage-length = 0 -MMD -MP -MF" AllTests.d "-MT" AllTests.o "-o" AllTests.o "" ../AllTests.cpp "../AllTests.cpp:5:10: фатальная ошибка: src / sr c .h: нет такого файла или каталога '

Когда я меняю:

include <src/src.h> to include "src/src.h"

компиляция работает, но затем перезапись файлов заголовков не работает. Что я делаю не так, что не могу перезаписать основной файл заголовка?

...