这可能是一个狡猾问题的机器人,但是我会尽力而为。
我有一个简单的c ++程序,我需要构建测试。除了我实际使用的那个之外,我还有2个类,它们被称为WebServer和BusinessLogicLayer。
为了测试我自己的代码,我已经创建了我自己的这些类的版本,它们将虚拟数据提供给我的类来测试它的功能。
我需要知道某种方式,例如,通过makefile,如何告诉源代码使用测试类而不是常用的类。测试类位于不同的“tester”c ++文件中,测试者c ++文件也有自己的头文件。
此致
保
P.S。这可能是一个措辞严厉的问题,但我不知道有任何更好的方式提出我的问题。
答案 0 :(得分:0)
您可以定义为组件声明公共接口的抽象基类,然后在运行时将对象连接在一起(在main()
或食物链中相当高的其他位置)。在测试中,您只需连接不同的对象。
答案 1 :(得分:0)
使用目录$ {SRC_DIR_1}和$ {SRC_DIR_2}中的源代码构建程序的调试版和发行版:
CXX := g++
CPPFLAGS = ...
CXXFLAGS = ...
SRC_DIR_1 := ...
SRC_DIR_2 := ...
ifeq (${debug},1)
BIN_DIR := ./obj_debug
CXXFLAGS += -g
else
BIN_DIR := ./obj_release
CXXFLAGS += -DNDEBUG
endif
# Make sure that the directory exists.
TEMP := ${shell test -d ${BIN_DIR} || mkdir ${BIN_DIR}}
# Tell make to search each directory
VPATH := ${SRC_DIR_1}:${SRC_DIR_2}
# You can modify this to use a suffix other than .cc
${BIN_DIR}/%.o : %.cc
${CXX} ${CPPFLAGS} ${CXXFLAGS} -c $< -o $@
# Build the requested version of the program.
ifeq (${debug},1)
default: program_name_debug
else
default: program_name
endif
tidy::
@${RM} -r ./obj_*
在“项目配置”对话框中,将目标名称指定为“program_name,program_name_debug”。 (将program_name替换为程序名称。)
要构建程序,请调用“make debug = X”,将X替换为0或1.
答案 2 :(得分:0)
为什么您的测试人员代码有自己的头文件?您的测试代码应该与它模拟的代码具有相同的接口,并且使用相同的头文件可以防止很多麻烦。
无论如何,这将有效:
real_program: WebServer.o BusinessLogicLayer.o
test_program: tester.o
real_program test_program: MyClass.o OtherThings.o
$(LINK) $^ -o $@