在Visual Studio中如何对C++项目进行单元测试(适用于Visual Studio 2017及以上的专业版和企业版)

您所在的位置:网站首页 vs测试框架 在Visual Studio中如何对C++项目进行单元测试(适用于Visual Studio 2017及以上的专业版和企业版)

在Visual Studio中如何对C++项目进行单元测试(适用于Visual Studio 2017及以上的专业版和企业版)

2024-01-23 20:08| 来源: 网络整理| 查看: 265

Visual Studio 2017及以后的版本自带了以下几种测试框架,这里我以Microsoft Unit Testing Framework for C++为例,因为这个是默认安装的,后面几种都是需要在Visual Studio安装程序中钩选安装才能使用。

Microsoft Unit Testing Framework for C++ Google Test Boost.Test CTest

如果是Visual Studio 2015及以前的版本,可以在Visual Studio市场中下载扩展来达到同样的功能。

 

这里分两种情况:一种是有导出函数的(库),一种是没有导出函数的(exe)。

 

先演示一下如何对没有导出函数的C++工程进行测试。

 

使用Visual Studio 2019 创建一个C++ 控制台程序(ConsoleApp),增加一个类math,如下:

math.h

1 #pragma once 2 3 class math 4 { 5 public: 6 math(); 7 ~math(); 8 int multiply(int x, int y); 9 int sum(int x, int y); 10 };

math.cpp

1 #include "math.h" 2 math::math() 3 { 4 } 5 6 math::~math() 7 { 8 } 9 10 int math::multiply(int x, int y) 11 { 12 return x * y; 13 } 14 15 int math::sum(int x, int y) 16 { 17 return x + y; 18 }

 

然后再创建一个C++的测试工程ConsoleAppTests

 

 

创建完成后,需要执行以下步骤

1.添加ConsoleApp项目引用 

 

2 将被测试的工程ConsoleApp链接进来。

打开属性->配置属性->链接器->输入->附加依赖项->$(SolutionDir)ConsoleApp\$(IntDir)*.obj

这个路径其实就是ConsoleApp的Debug目录,里面会有一些编译产生的文件,这里主要用到的就是obj文件。

 

3.添加头文件

我这里用的相对路径,也可以在属性->配置属性->VC++目录->包含目录这里,把ConsoleApp的目录包含进来,就可以直接使用头文件

1 #include "../ConsoleApp/math.h"

 

4. 编写测试代码

1 #include "pch.h" 2 #include "CppUnitTest.h" 3 #include "../ConsoleApp/math.h" 4 5 using namespace Microsoft::VisualStudio::CppUnitTestFramework; 6 7 namespace ConsoleAppTests 8 { 9 TEST_CLASS(ConsoleAppTests) 10 { 11 public: 12 13 TEST_METHOD(TestMath) 14 { 15 math ma; 16 auto result = ma.sum(2, 2); 17 18 Assert::IsTrue(result == 4); 19 } 20 }; 21 }

 

5.执行测试

可以通过菜单 测试->测试资源管理器打开测试资源管理器,然后执行测试或调试测试。

 

也可以点击测试函数上方的蓝色符号执行测试或调试

 

 

6. 查看测试结果 

执行测试后,可以通过测试资源管理器查看测试是否通过

 

 

下面演示一下如何对有导出函数的C++工程进行测试。

首先,我们创建一个动态链接库工程Dll

 

 

 

增加下面两个文件用于测试

math.h

1 #pragma once 2 3 extern "C" __declspec(dllexport) int sum(int x, int y);

 

math.cpp

1 #include"pch.h" 2 #include"math.h" 3 4 int sum(int x, int y) 5 { 6 return x + y; 7 }

 

创建测试工程的过程跟上面一样,就不重复演示了。主要就是第2步链接obj文件那里,这里换成生成的lib文件路径

$(SolutionDir)$(Configuration)\Dll.lib

 

 

测试代码:

1 #include "pch.h" 2 #include "CppUnitTest.h" 3 #include "../Dll/math.h" 4 5 using namespace Microsoft::VisualStudio::CppUnitTestFramework; 6 7 namespace DllTests 8 { 9 TEST_CLASS(DllTests) 10 { 11 public: 12 13 TEST_METHOD(Math) 14 { 15 auto result = sum(2, 2); 16 Assert::IsTrue(result == 4); 17 } 18 }; 19 }

 

 

示例代码

 

 

推荐阅读:

Microsoft Test Framework所提供的全部接口



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3