测试 DLL 代码有多种方式,具体取决于是否导出要测试的函数。 选择以下方式之一:
单元测试仅调用从 DLL 导出的函数:按照编写 C/C++ 单元测试中所述添加单独的测试项目。 在测试项目中,添加对 DLL 项目的引用。
转到过程引用从 DLL 项目导出的函数的具体步骤。
DLL 生成为 .exe 文件:添加单独的测试项目。 将其与输出对象文件关联起来。
转到过程将测试与对象或库文件相关联的具体步骤。
单元测试调用不从 DLL 导出的非成员函数,并且 DLL 可以生成为静态库:更改 DLL 项目,以便将其编译为 .lib 文件。 添加引用所测试项目的单独测试项目。
此方法的好处是,允许测试使用非导出成员,但测试仍保留在单独的项目中。
转到过程将 DLL 更改为静态库的具体步骤。
单元测试必须调用不导出的非成员函数,并且代码必须生成为动态链接库 (DLL):在同一项目中添加单元测试作为产品代码。
转到过程在同一项目中添加单元测试的具体步骤。
创建测试
将 DLL 更改为静态库的具体步骤
如果测试必须使用 DLL 项目不导出的成员,并且所测试项目将生成为动态库,请考虑将其转换为静态库。
在“解决方案资源管理器”中,从受测试项目的快捷菜单中选择“属性”。 此时将打开项目“属性”窗口。
选择“配置属性”>“常规” 。
将“配置类型”设为“静态库(.lib)”。
继续执行过程将测试与对象或库文件相关联的具体步骤。
从测试项目引用导出的 DLL 函数的具体步骤
如果 DLL 项目将导出你要测试的函数,则可从测试项目添加对代码项目的引用。
创建本机单元测试项目。
- 在“文件”菜单上,选择“新建”>“项目” 。 在“添加新项目”对话框中,将“语言”设置为 C++ 并在搜索框中键入“测试”。 然后,选择“本机测试项目”。
在“解决方案资源管理器”中,右键单击测试项目,然后选择“添加”>“引用”。
依次选择“项目”和要测试的项目。
选择“添加”按钮。
在测试项目的属性中,将所测试项目的位置添加到“包含目录”中。
选择“配置属性”>“VC++ 目录”>“包含目录” 。
选择“编辑”,然后添加受测项目的头目录。
转到编写单元测试。
关联测试与对象或库文件
如果 DLL 不导出要测试的函数,可以将输出的 .obj 或 .lib 文件添加到测试项目的依赖项中 。
创建本机单元测试项目。
- 在“文件”菜单上,选择“新建”>“项目” 。 在“添加新项目”对话框中,将“语言”设置为 C++ 并在搜索框中键入“测试”。 然后,选择“本机测试项目”。
在“解决方案资源管理器”中,从测试项目的快捷菜单中选择“属性”。
选择“配置属性”>“链接器”>“输入”>“附加依赖项” 。
选择“编辑”,然后添加 .obj 或 .lib 文件名。 请勿使用完整路径名称。
选择“配置属性”>“链接器”>“常规”>“附加库目录” 。
选择“编辑”,然后添加 .obj 或 .lib 文件的目录路径。 该路径一般位于所测试项目的生成文件夹中。
选择“配置属性”>“VC++ 目录”>“包含目录” 。
选择“编辑”,然后添加受测项目的头目录。
转到编写单元测试。
在同一项目中添加单元测试
修改产品代码项目属性,以包含单元测试所需的标头和库文件。
在解决方案资源管理器中,从受测项目的快捷菜单上选择“属性”。 此时将打开项目“属性”窗口。
选择“配置属性”>“VC++ 目录” 。
编辑“包含目录”和“库目录”:
目录 Property 包含目录 $(VCInstallDir)Auxiliary\VS\UnitTest\include 库目录 $(VCInstallDir)Auxiliary\VS\UnitTest\lib
添加 C++ 单元测试文件:
在解决方案资源管理器中右键单击项目节点,然后选择“添加”>“新增项” 。
在“添加新项”对话框中,选择“C++ 文件(.cpp)”,并为其指定适当的名称,然后选择“添加”。
转到编写单元测试。
编写单元测试
在每个单元测试代码文件中,为所测试项目的标头添加
#include
语句。向单元测试代码文件添加测试类和方法。 例如:
#include "stdafx.h" #include "CppUnitTest.h" #include "MyProjectUnderTest.h" using namespace Microsoft::VisualStudio::CppUnitTestFramework; namespace MyTest { TEST_CLASS(MyTests) { public: TEST_METHOD(MyTestMethod) { Assert::AreEqual(MyProject::Multiply(2,3), 6); } }; }
运行测试
在“测试” 菜单中,依次选择“窗口” >“测试资源管理器” 。
如果部分测试在窗口中不可见,请按照以下步骤生成测试项目:在解决方案资源管理器中右键单击测试项目的节点,并选择“生成”或“重新生成” 。
在测试资源管理器中,选择“全部运行”,或选择要运行的特定测试 。 右键单击测试以获得其他选项,例如,在启用断点的情况下在调试模式中运行它。