51Testing软件测试论坛

标题: CppUnit 多工程测试,被测试工程一定要生成DLL吗? [打印本页]

作者: frankiehuang    时间: 2007-4-23 10:08
标题: 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,如何包含呢?

谢谢回答!
作者: 1073X    时间: 2007-4-26 14:03
如果你的被测项目是EXE,就把CPPUNIT集成到EXE中,不要用两个工程.

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

这是我的办法,不知道还有没有更好的办法了.
作者: cdnewbee    时间: 2007-7-20 12:01
我的方法是在原工程中用一个新的build configuration(Visual Studio),让这个build生成static lib,然后在测试工程中添加对原工程的dependency就可以了. 这样测试工程就只需要原工程的include文件,而无需源代码文件.  原工程如需要exe, 用另一个build就可以了.
作者: aeroa    时间: 2007-8-14 11:57
标题: 回复 #3 cdnewbee 的帖子
我认为在测试工程中把被测工程的源代码和头文件包含进来就可以了。
作者: Elaine126    时间: 2008-3-24 23:09
标题: 回复 1# 的帖子
需要包含三个.DLL库文件的.
作者: leiyingecho    时间: 2012-4-30 00:02
同意三楼




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2