Visual Studio 使用教程:如何在Visual Studio中使用Boost.Test for C ++
Visual Studio 是功能完备的 IDE,可用于编码、调试、测试和部署到任何平台,Visual Studio使用 .NET 开发 iOS、Android 和 Web 应用和游戏。
在Visual Studio 2017和更高版本中,Boost.Test测试适配器已集成到Visual Studio IDE中。 它是具有C ++工作负载的桌面开发的组成部分。
如果您没有安装带有C ++工作负载的桌面开发,请打开Visual Studio安装程序。选择带有C ++工作负载的桌面开发,然后选择“修改”按钮。
安装Boost
Boost.Test需要Boost,如果您没有安装Boost,我们建议您使用Vcpkg软件包管理器。
- 请遵循Vcpkg上的说明:Windows的C ++软件包管理器来安装vcpkg(如果尚未安装)。
- 安装Boost.Test动态或静态库:
- 运行vcpkg install boost-test以安装Boost.Test动态库。
- 运行vcpkg install boost-test:x86-windows-static来安装Boost.Test静态库。
- 运行vcpkg Integrated install以使用库配置Visual Studio,并包括Boost标头和二进制文件的路径。
您可以选择如何在Visual Studio的解决方案中配置测试:您可以将测试代码包含在要测试的项目中,也可以为测试创建单独的测试项目,两种选择都各有优点和缺点。
在项目中添加测试
在Visual Studio 2017 15.6版和更高版本中,可以将用于测试的项目模板添加到项目中,测试和代码都在同一个项目中。您必须创建一个单独的构建配置才能生成测试构建。而且,您需要将测试排除在调试和发布版本之外。
在Visual Studio 2017版本15.5中,没有预配置的测试项目或项目模板可用于Boost.Test。使用说明创建和配置单独的测试项目。
创建一个Boost.Test项目
- 要为测试创建.cpp文件,请在解决方案资源管理器中右键单击项目节点,然后选择“添加”>“新建项目”。
- 在“添加新项”对话框中,展开“已安装”>“ Visual C ++”>“测试”。选择Boost.Test,然后选择Add将Test.cpp添加到您的项目。
测试文件还使用宏为测试配置定义新的主例程。如果立即构建项目,则会看到LNK2005错误,例如“ _main已经在main.obj中定义”。
创建和更新构建配置
- 要创建测试配置,请在菜单栏上,选择“构建”>“配置管理器”。在“配置管理器”对话框中,打开“活动解决方案配置”下的下拉列表,然后选择“新建”。在“新解决方案配置”对话框中,输入一个名称,例如“ Debug UnitTests”。在“从以下位置复制设置”下,选择“调试”,然后选择“确定”。
- 从调试和发布配置中排除测试代码:在解决方案资源管理器中,右键单击Test.cpp并选择“属性”。在“属性页面”对话框中,在“配置”下拉列表中选择“所有配置”。选择“配置属性”>“常规”,然后打开“从构建中排除”属性的下拉列表。选择是,然后选择应用保存更改。
- 要将测试代码包含在Debug UnitTests配置中,请在“属性页”对话框的“配置”下拉列表中选择“ Debug UnitTests”。在“排除在内部版本”属性中选择“否”,然后选择“确定”保存更改。
- 从调试单元测试配置中排除主要代码。在解决方案资源管理器中,右键单击包含您的主要功能的文件,然后选择“属性”。在“属性页”对话框中,在“配置”下拉列表中选择“调试单元测试”。选择“配置属性”>“常规”,然后打开“从构建中排除”属性的下拉列表。选择是,然后选择确定以保存更改。
- 将解决方案配置设置为Debug UnitTests,然后构建项目以使Test Explorer能够发现方法。
只要您创建的配置名称以“ Debug”或“ Release”开头,就会自动获取相应的Boost.Test库。项目模板使用Boost.Test的单头变体,但是您可以修改#include路径以使用独立库的变体。
创建一个单独的测试项目
在许多情况下,使用单独的项目进行测试会更容易,您无需为项目创建特殊的测试配置。或者,从“调试和发布”版本中排除测试文件。
创建一个单独的测试项目
- 在解决方案资源管理器中,右键单击解决方案节点,然后选择“添加”>“新建项目”。
- 在“添加新项目”对话框中,在过滤器下拉列表中选择“ C ++”,“ Windows”和“控制台”。选择控制台应用程序模板,然后选择下一步。
- 为项目命名,然后选择创建。
- 删除.cpp文件中的主要功能。
- 如果您使用的是Boost.Test的单头或动态库版本,请转到“添加包含”指令。如果使用的是静态库版本,则必须进行一些其他配置:
- 要编辑项目文件,请首先将其卸载。在解决方案资源管理器中,右键单击项目节点,然后选择“卸载项目”。然后,右键单击项目节点,然后选择“编辑<名称> .vcxproj”。
- 将两行添加到Globals属性组,如下所示:
<PropertyGroup Label="Globals"> .... <VcpkgTriplet>x86-windows-static</VcpkgTriplet> <VcpkgEnabled>true</VcpkgEnabled> </PropertyGroup>
- 保存并关闭* .vcxproj文件,然后重新加载该项目。
- 要打开“属性页”,请在项目节点上单击鼠标右键,然后选择“属性”。
- 展开C / C ++>代码生成,然后选择运行时库。选择/ MTd调试静态运行时库,或/ MT释放静态运行时库。
- 展开链接器>系统,验证子系统设置为控制台。
- 选择确定以关闭属性页。
添加包含指令
在您的测试.cpp文件中,添加所有需要的#include指令,以使程序的类型和功能对测试代码可见。如果您使用的是单独的测试项目,则该程序通常位于文件夹层次结构中的同级级别。如果键入#include "../",将出现IntelliSense窗口,使您可以选择头文件的完整路径。
您可以通过以下方式使用独立库:
#include <boost/test/unit_test.hpp>
或者,将单头版本用于:
#include <boost/test/included/unit_test.hpp>然后,定义BOOST_TEST_MODULE。
以下示例足以使您可以在“测试资源管理器”中发现该测试:
#define BOOST_TEST_MODULE MyTest #include <boost/test/included/unit_test.hpp\> //single-header #include "../MyProgram/MyClass.h" // project being tested #include <string> BOOST_AUTO_TEST_CASE(my_boost_test) { std::string expected_value = "Bill"; // assume MyClass is defined in MyClass.h // and get_value() has public accessibility MyClass mc; BOOST_CHECK(expected_value == mc.get_value()); }最后,您可以编写和运行Boost测试了。
推荐文章:
在Visual Studio中编写C / C ++的单元测试
想要购买Visual Studio正版授权,或了解更多产品信息请点击