是否可以在已经具有main函数的cpp文件上运行测试?

时间:2013-07-25 20:38:43

标签: c++ unit-testing testing c-preprocessor

在我得到答案之前:“将您要测试的代码移动到另一个.cpp文件”我不能这样做。我曾尝试使用预处理器#if TESTING_SUITE ... #endif,但这不起作用,我仍然得到:

  

“main”的多重定义

我编译代码如下:

g++ -lmxml -lccpunit -o pic pic.cpp wmcc.cp test.cpp

我在pic.cpp中有一个main,在test.cpp中有另一个。有办法解决这个问题吗?

更新

在我的test.cpp中:

#define TESTING_SUITE_1

在我的pic.cpp中:

#ifndef TESTING_SUITE_1
    int main(...
#endif

不工作

2 个答案:

答案 0 :(得分:2)

您可以为链接器指定另一个入口点。 对于MS cl.exe,代码为:(抱歉,我没有看到你使用gcc)

#pragma comment(linker, "/entry:alternative_main")

或通过项目属性页:

Configuration Properties >
  Linker >
    Advanced >
      Entry Point

或直接在命令行:

/entry:alternative_main

对于gcc,它是以下命令行开关:

-Wl,-ealternative_main

对于其他编译器,请参阅手册。

答案 1 :(得分:0)

您可以通过编译为

来实现
g++ -Dmain=main_pic_moved -c pic.cpp
g++ -Dmain=main_wmcc_moved -c wmcc.cp
g++ -lmxml -lccpunit -o pic pic.o wmcc.o test.cpp