Visual Studio 使用教程:在Visual Studio中编写C / C ++的单元测试
Visual Studio 是功能完备的 IDE,可用于编码、调试、测试和部署到任何平台,Visual Studio使用 .NET 开发 iOS、Android 和 Web 应用和游戏。
您可以使用“ 测试资源管理器”窗口来编写和运行C ++单元测试。它的工作方式与其他语言一样。
注意:C ++不支持某些功能,例如实时单元测试,编码的UI测试和IntelliTest。
Visual Studio包括这些C ++测试框架,无需额外下载:
- Microsoft C ++单元测试框架
- 谷歌测试
- 增强测试
- 测试
Visual Studio 2017及更高版本(专业版和企业版)。C ++单元测试项目支持CodeLens。
Visual Studio 2017及更高版本(所有版本)
- Google Test Adapter是带有C ++工作负载的桌面开发的默认组件。它具有一个项目模板,您可以将其添加到解决方案中。使用解决方案资源管理器中解决方案节点上的“ 添加新项目”右键菜单来添加它。它还具有可以通过“ 工具” >“ 选项”配置的选项。
- Boost.Test是包含C ++工作负载的桌面开发的默认组件。它与Test Explorer集成在一起,但是目前没有项目模板。必须手动配置。
- CTest支持包含在C ++ CMake工具组件中,该组件是使用C ++工作负载进行桌面开发的一部分。有关更多信息,请参见如何:在Visual Studio中使用CTest。
基本测试流程
以下各节显示了入门C ++单元测试的基本步骤。Microsoft和Google Test框架的基本配置都相似。Boost.Test要求您手动创建一个测试项目。
在Visual Studio 2019中创建测试项目
您可以在一个或多个测试项目中定义和运行测试。您可以使用与要测试的代码相同的解决方案来创建项目。要将新的测试项目添加到现有解决方案中,请在解决方案资源管理器中右键单击解决方案节点。在弹出菜单中,选择“ 添加” >“ 新建项目”。将语言设置为C ++,然后在搜索框中输入“ test”。下图显示了安装带有C ++的桌面开发和UWP Development工作负载时可用的测试项目:
在解决方案中创建对其他项目的引用
要允许访问被测项目中的功能,请在测试项目中添加对该项目的引用。在解决方案资源管理器中的测试项目节点上单击鼠标右键,以弹出菜单。选择添加 > 参考。
链接到对象或库文件
如果测试代码没有导出要测试的功能,则可以将输出.obj或.lib文件添加到测试项目的依赖项中。
为头文件添加#include指令
接下来,在单元测试.cpp文件中,#include为任何标头文件添加一个指令,该标头文件声明要测试的类型和功能。键入#include ",然后IntelliSense将激活以帮助您选择。对其他标题重复上述步骤。
为了避免在源文件的每个include语句中键入完整路径,可以在Project > Properties > C / C ++ > General > Additional Include Directories中添加所需的文件夹。
编写测试方法
注意:本节显示了用于C / C ++的Microsoft单元测试框架的语法。
测试项目中的.cpp文件具有为您定义的存根类和方法。它们显示了如何编写测试代码的示例。签名使用TEST_CLASS和TEST_METHOD宏,这些宏使方法可以从“ 测试资源管理器”窗口中发现。
TEST_CLASS和TEST_METHOD是Microsoft本机测试框架的一部分。Test Explorer以类似的方式发现其他受支持框架中的测试方法。
TEST_METHOD返回void。要产生测试结果,请使用Assert该类中的静态方法来根据预期结果测试实际结果。在以下示例中,假定MyClass具有一个采用的构造函数std::string。我们可以测试构造函数是否按预期方式初始化了该类,如下所示:
TEST_METHOD(TestClassInit) { std::string name = "Bill"; MyClass mc(name); Assert::AreEqual(name, mc.GetName()); }在前面的示例中,Assert::AreEqual调用结果确定测试是通过还是失败。Assert类包含许多其他方法,用于比较预期结果与实际结果。
您可以向测试方法添加特征以指定测试所有者,优先级和其他信息。然后,您可以在Test Explorer中使用这些值对测试进行排序和分组。
运行测试
在“ 测试”菜单上,选择“ Windows” >“ 测试资源管理器”。下图显示了尚未运行测试的测试项目。
注意:CTest与Test Explorer的集成尚不可用。从CMake主菜单运行CTest测试。
如果在窗口中看不到所有测试,请通过在解决方案资源管理器中右键单击其节点并选择Build或Rebuild来构建测试项目。
在“ 测试资源管理器”中,选择“全部运行”,或选择要运行的特定测试。右键单击测试以获取其他选项,包括在启用断点的调试模式下运行。运行所有测试后,该窗口显示哪些测试通过和哪些测试失败:
对于失败的测试,该消息提供了有助于诊断原因的详细信息。右键单击失败的测试以弹出菜单。选择“ 调试选定的测试”以逐步执行发生故障的功能。
使用CodeLens(Visual Studio 2017及更高版本(专业版和企业版))
使用CodeLens,您可以快速查看单元测试的状态,而无需离开代码编辑器。您可以通过以下任何一种方式为C ++单元测试项目初始化CodeLens:
- 编辑并构建您的测试项目或解决方案。
- 重建您的项目或解决方案。
- 从“ 测试资源管理器”窗口中运行测试。
单击该图标以获取更多信息,或者运行或调试单元测试:
本次内容到此就结束了,喜欢该产品的朋友可以点击下载Visual Studio试用版免费体验~
想要购买Visual Studio正版授权,或了解更多产品信息请点击