google搜索 站内搜索                 软件测试门户 | 软件测试培训 | 文章资料精选 | 软件测试论坛 | 测试解决方案 | 软件测试博客 | 测试招聘求职 
打印

CppUnit 多工程测试,被测试工程一定要生成DLL吗?

CppUnit 多工程测试,被测试工程一定要生成DLL吗?


我用的是CppUnit1.12   在VS.net 2003中运用C++

项目中有两个工程,一个测试工程和一个被测工程,在测试工程中调用被测工程的函数进行测试,遇到如下错误:

正在链接...
MsnokTestCase.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall CTestClass::CTestClass(void)" (??0CTestClass@@QAE@XZ) ,该符号在函数 "public: __thiscall CMsnokTestCase::CMsnokTestCase(void)" (??0CMsnokTestCase@@QAE@XZ) 中被引用
MsnokTestCase.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall CTestClass::~CTestClass(void)" (??1CTestClass@@QAE@XZ) ,该符号在函数 "public: virtual __thiscall CMsnokTestCase::~CMsnokTestCase(void)" (??1CMsnokTestCase@@UAE@XZ) 中被引用
Debug/MsnOkTest.exe : fatal error LNK1120: 2 个无法解析的外部命令。

链接器的命令行 已经包含了cppunitd.lib testrunnerd.lib。而且当编译一个不依赖于被测试项目的单元测试没有问题。当加上一个被测试项目的测试,就出现如上错误。

我查了一些文章,说要把被测试项目的dll包含,但我的被测试项目没有生成dll,直接生成了exe,如何包含呢?

谢谢回答!

TOP

如果你的被测项目是EXE,就把CPPUNIT集成到EXE中,不要用两个工程.

CPPUNIT本身就是一个库,只需要在EXE中给他一个入口程序就可以了.虽然这样代码看起来不好,可能需要用编译选项把测试代码屏蔽掉,可是好象也是没有办法的事情.

这是我的办法,不知道还有没有更好的办法了.

TOP

我的方法是在原工程中用一个新的build configuration(Visual Studio),让这个build生成static lib,然后在测试工程中添加对原工程的dependency就可以了. 这样测试工程就只需要原工程的include文件,而无需源代码文件.  原工程如需要exe, 用另一个build就可以了.

TOP

回复 #3 cdnewbee 的帖子


我认为在测试工程中把被测工程的源代码和头文件包含进来就可以了。

TOP

回复 1# 的帖子


需要包含三个.DLL库文件的.

TOP

 
当前时区 GMT+8, 现在时间是 2008-11-21 04:49Copyright(C)上海博为峰软件技术有限公司 2001-2007 电话:021-64471599-8017
当您在访问网站、论坛及博客过程中遇到问题时可发送email:webmaster@51testing.com或发送论坛短信至管理员风在吹