Visual Studio是功能完备的 IDE,可用于编码、调试、测试和部署到任何平台,Visual Studio使用 .NET 开发 iOS、Android 和 Web 应用和游戏。
点击立即下载Visual Studio
有多种测试DLL代码的方法,具体取决于它是否导出要测试的功能。选择以下方式之一:
- 单元测试仅调用从DLL导出的函数:按照编写C / C ++单元测试中所述添加单独的测试项目。在测试项目中,添加对DLL项目的引用。
- DLL被构建为.exe文件:添加一个单独的测试项目。将其链接到输出目标文件。
- 单元测试调用未从DLL导出的非成员函数,并且DLL可以构建为静态库:更改DLL项目,以便将其编译为.lib文件。添加一个单独的测试项目,该项目引用被测项目。这种方法的好处是允许您的测试使用未导出的成员,但仍将测试保留在单独的项目中。
- 单元测试必须调用未导出的非成员函数,并且代码必须构建为动态链接库(DLL):在与产品代码相同的项目中添加单元测试。
创建测试
将DLL更改为静态库
- 如果您的测试必须使用DLL项目未导出的成员,并且被测试项目被构建为动态库,请考虑将其转换为静态库。
- 在解决方案资源管理器中,在要测试的项目的快捷菜单上,选择“属性”。将打开项目“属性”窗口。
- 选择“配置属性>常规”。
- 将配置类型设置为静态库(.lib)。
引用测试项目中导出的DLL函数
- 如果DLL项目导出了要测试的功能,则可以从测试项目中添加对代码项目的引用。
- 创建一个本机单元测试项目。
- 在“文件”菜单上,选择“新建”>“项目”。在“添加新项目”对话框中,将“语言”设置为C ++,然后在搜索框中键入“ test”。然后选择“本机单元测试项目”。
- 在解决方案资源管理器中,右键单击测试项目,然后选择“添加”>“引用”。
- 选择项目,然后选择要测试的项目。
- 在测试项目的属性中,将被测试项目的位置添加到“包括目录”中。
选择添加按钮。
将测试链接到对象或库文件
- 如果DLL没有导出要测试的功能,则可以将输出.obj或.lib文件添加到测试项目的依赖项中。
- 创建一个本机单元测试项目。
- 在“文件”菜单上,选择“新建”>“项目”。在“添加新项目”对话框中,将“语言”设置为C ++,然后在搜索框中键入“ test”。然后选择“本机单元测试项目”。
- 在解决方案资源管理器中,在测试项目的快捷菜单上,选择“属性”。
- 选择“配置属性>链接器>输入>其他依赖关系”。
- 选择“配置属性>链接器>常规>其他库目录”。
- 选择“配置属性”>“ VC ++目录”>“包含目录”。
在同一项目中添加单元测试
- 修改产品代码项目属性,以包括单元测试所需的头文件和库文件。
- 在解决方案资源管理器中,在被测项目的快捷菜单中,选择“属性”,将打开项目“属性”窗口。
- 选择“配置属性”>“ VC ++目录”。
目录 | 属性 |
包含目录 | $(VCInstallDir)UnitTestinclude;$(IncludePath) |
图书馆目录 | $(VCInstallDir)UnitTestlib;$(LibraryPath) |
- 添加一个C ++单元测试文件:
- 在解决方案资源管理器中,在项目的快捷菜单中,选择“添加”>“新建项”>“ C ++单元测试”。
编写单元测试
在每个单元测试代码文件中,为要测试的项目的标题添加#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); } };}
运行测试
- 在“测试”菜单上,选择“ Windows”>“测试资源管理器”。
- 如果在窗口中看不到所有测试,请在“解决方案资源管理器”中右键单击其节点,然后选择“生成”或“重新生成”,以构建测试项目。
- 在测试资源管理器中,选择“全部运行”,或选择要运行的特定测试。右键单击测试以获取其他选项,包括在启用断点的调试模式下运行。
推荐文章:
在Visual Studio中编写C / C ++的单元测试
想要购买Visual Studio正版授权,或了解更多产品信息请点击【咨询在线客服】
标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!