Visual Studio(VS)C++单元测试

版权声明:若无来源注明, Techie亮博客文章均为原创。 转载请以链接形式标明本文标题和地址:
本文标题:Visual Studio(VS)C++单元测试     本文地址: http://techieliang.com/2017/12/516/

1. 新建一个待测项目MyProgram

新建了一个“Win32控制台应用程序”,在其内新建了“my_math.h”文件,为了方便没有建立类和.cpp文件,用一个简单的函数做范例。

  1. //my_math.h
  2. #pragma once
  3. int add(int a, int b) {
  4. return a + b;
  5. }

1.1. 新建一个测试项目MyProgramTest

此处要选择Visual C++->测试->本机单元测试项目,填写好名称,点击确定即可,不需要其他配置就会在当前解决方案下新建出项目。

注意新建的时候直接右键选择当前解决方案-添加-新建项目,这样默认为当前解决方案

系统默认生成了四个文件“stdafx.h”、“stdafx.cpp”(Standard Application Framework Extensions)预编译头文件,“targetver.h”运行环境定义头文件,“unittest1.cpp”测试文件。前三个不用管,直接看第四个测试文件即可。

1.2. 必要的配置

新建完成MyProgramTest项目以后,在属性-连接器-输入-附加依赖项中添加“..\MyProgram\Debug\*.obj”

建议使用相对路径,使用*表明所有.obj后缀文件。注意只需要配置单元测试项目,不需要对原项目做任何修改。

obj文件(Microsoft推出的程序编译中间代码文件),程序编译时生成的中间代码文件。目标文件,一般是程序编译后的二进制文件,再通过链接器和资源文件链接就成可执行文件了。OBJ只给出了程序的相对地址,而可执行文件是绝对地址。

2. XXXtext.cpp测试文件说明

  1. #include "stdafx.h"
  2. #include "CppUnitTest.h"
  3. #include "../MyProgram/my_math.h" //添加原始项目的头文件,建议相对路径
  4. using namespace Microsoft::VisualStudio::CppUnitTestFramework;
  5. namespace MyProgramTest {//MyProgram项目单元测试
  6. TEST_CLASS(UnitTest1) {//测试类
  7. public:
  8. TEST_METHOD(TestMethod1) {//测试函数
  9. // TODO: 在此输入测试代码
  10. Assert::AreEqual(15, add(5, 10));
  11. }
  12. };
  13. }

自己包含原始项目被测函数头文件”#include “../MyProgram/my_math.h” //添加原始项目的头文件,建议相对路径”

UnitTest1为测试类名,TEST_CLASS为VS提供的测试类宏定义

  1. #define TEST_CLASS(className) \
  2. ONLY_USED_AT_NAMESPACE_SCOPE class className : public ::Microsoft::VisualStudio::CppUnitTestFramework::TestClass<className>

TestMethod1为测试函数名,TEST_METHOD为VS提供的测试函数宏定义

Assert为断言类,其提供了AreEqual、AreSame、AreNotEqual、AreNotSame、IsNull、IsNotNull、IsTrue、IsFalse等多个方法以供测试中进行断言

  1. Assert.Inconclusive()//表示一个未验证的测试;
  2. Assert.AreEqual() //测试指定的值是否相等,如果相等,则测试通过;
  3. AreSame() //用于验证指定的两个对象变量是指向相同的对象,否则认为是错误
  4. AreNotSame() //用于验证指定的两个对象变量是指向不同的对象,否则认为是错误
  5. Assert.IsTrue() //测试指定的条件是否为True,如果为True,则测试通过;
  6. Assert.IsFalse() //测试指定的条件是否为False,如果为False,则测试通过;
  7. Assert.IsNull() //测试指定的对象是否为空引用,如果为空,则测试通过;
  8. Assert.IsNotNull() //测试指定的对象是否为非空,如果不为空,则测试通过;

若需要多个测试函数,只需要在public:下建立多个TEST_METHOD即可

若需要多个测试类,可以新建一些cpp文件,注意包含vs单元测试文件CppUnitTest.h

3. 运行单元测试

单元测试运行,不需要提前先编译原始程序,运行测试时会自动编译。

在菜单栏-测试-运行选择运行所有测试即可

选择此项后会先编译目标项目,然后执行所有测试类中的public中的测试函数(有不需要测试的可以临时改为private)。

测试结果会在测试资源管理器显示

若此窗口不自动弹出,可在菜单栏-测试-窗口打开

4. 其他

4.1. 并行测试

“测试资源管理器”搜索框左侧的三个双向箭头按钮,点击他会进入选中状态,即开启了并行测试功能。

4.2. 代码覆盖率测试

对于VS2015 Enterprise版本在测试菜单下“分析代码覆盖率”可以利用当前单元测试分析对原始项目的代码覆盖率。

VS2015 Community版本没有分析代码覆盖率功能

 

转载于:https://www.cnblogs.com/techiel/p/7954142.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Visual Studio 中使用单元测试非常简单。以下是一些步骤来设置和运行单元测试: 1. 首先,打开 Visual Studio 并创建一个项目(可以是 C#、C++ 或其他语言的项目)。 2. 在解决方案资源管理器中,右键单击您要进行单元测试的项目,并选择“添加”>“新建项目”。 3. 在“添加新项目”对话框中,选择“测试”类别,然后选择“单元测试项目”模板。为您的单元测试项目指定一个名称,并单击“确定”。 4. 单元测试项目将添加到解决方案中,并包含一个默认的测试类和一个示例测试方法。 5. 打开您要进行单元测试的类文件,并添加适当的测试方法。测试方法应该是公共的、无返回值的函数,并使用特性标记为 `[TestMethod]`。 6. 在测试资源管理器中,您可以看到所有的测试方法。右键单击一个测试方法,并选择“运行选定的测试”来运行该方法的单元测试。您也可以右键单击测试类或测试项目,并选择“运行所有测试”来运行整个测试套件。 7. 运行单元测试后,您将看到测试资源管理器中显示的结果。成功的测试将显示为绿色,失败的测试将显示为红色,并显示失败的原因。 这只是一个简单的介绍,Visual Studio 还提供许多其他功能和选项来帮助您编写和管理单元测试。您可以参考 Visual Studio 的文档和教程来了解更多详细信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值