在VS2013中,可以使用VS自带的C++单元测试框架。

  在使用该框架前,需要先安装Unit Test Generator(可以通过菜单“工具->扩展和更新”搜索安装)。

  下边,就阐述一下利用该框架的步骤:

1. 新建空的Win32控制台项目NativeUnitTest

  将该工程的"配置类型"改为“动态库(dll)”,如下图:

  

2. 新建单元测试工程

  在解决方案NativeUnitTest下新建单元测试工程,“Visual C++ -> 测试 -> 本机单元测试项目”,如下图所示:

  

3. 生成NativeUnitTest项目

  这样做的目的在于生成.obj文件(在NativeUnitTest/Debug/中),以便于单元测试项目添加。

4. 修改单元测试项目属性

  详细如下图所示:

5. 编写单元测试文件

  NativeUnitTest项目的头文件和源文件如下:

 class TrivialCalculator
{
public:
double Add(double x, double y);
double Subtract(double x, double y);
double Multiply(double x, double y);
double Divide(double x, double y);
};

TrivialCalculator.h

 #include "TrivialCalculator.h"

 double TrivialCalculator::Add(double x, double y)
{
return x + y;
} double TrivialCalculator::Subtract(double x, double y)
{
return x - y;
} double TrivialCalculator::Multiply(double x, double y)
{
return x * y;
} double TrivialCalculator::Divide(double x, double y)
{
return x / y;
}

TrivialCalculator.cpp

  单元测试文件如下:

 #include "stdafx.h"
#include "CppUnitTest.h"
#include "..\NativeUnitTest\TrivialCalculator.h" using namespace Microsoft::VisualStudio::CppUnitTestFramework;
using namespace std; namespace NativeUnitTest_Namespace
{
TEST_CLASS(TrivialCalculatorTest)
{
public:
TrivialCalculatorTest()
{
test = new TrivialCalculator;
} ~TrivialCalculatorTest()
{
delete test;
} TEST_METHOD(AddTest)
{
//TrivialCalculator test;
double actual = test->Add(1.0, 2.0);
double expected = 3.0; Assert::AreEqual(expected, actual, 0.0001);
} TEST_METHOD(SubtractTest)
{
//TrivialCalculator test;
double actual = test->Subtract(2.0, 1.0);
double expected = 1.0; Assert::AreEqual(expected, actual, 0.0001);
} public:
TrivialCalculator * test; }; }

  具体步骤到此结束!

  项目文件可以从百度云下载。

  参考资料:

  使用 Microsoft.VisualStudio.TestTools.CppUnitTestFramework

  (英文版Using Microsoft.VisualStudio.TestTools.CppUnitTestFramework

  Writing Native C++ Unit Tests with VS Test

  Unit testing native code with Test Explorer

  Visual Studio 单元测试 C++ 版 —— 测试已有的工程

  在Visual Studio 2013 中使用C++单元测试

如何使用VS2013本地C++单元测试框架的更多相关文章

  1. Pytest单元测试框架:插件-allure-pytest环境搭建并在本地生成一个测试报告

    之前写了allure-pytest的官方文档啃的内容,有些交流的朋友,实践起来没什么头绪,所以就有了这篇文章,也给自己填个坑 第一步:搭建Allure.JDK环境 1. 搭建JDK环境 不装jdk你会 ...

  2. javascript单元测试框架mochajs详解

    关于单元测试的想法 对于一些比较重要的项目,每次更新代码之后总是要自己测好久,担心一旦上线出了问题影响的服务太多,此时就希望能有一个比较规范的测试流程.在github上看到牛逼的javascript开 ...

  3. Google C++单元测试框架GoogleTest---GMock的CheatSheet文档

    CheatSheet文档中包含了GMock所有常用的东西,看了这个基本上就可以用它了,本文接上篇博文:Google C++单元测试框架GoogleTest---Google Mock简介--概念及基础 ...

  4. Python单元测试框架

    目录 概况 系统要求 使用PyUnit构建自己的测试 安装 测试用例介绍 创建一个简单测试用例 复用设置代码:创建固件 包含多个测试方法的测试用例类 将测试用例聚合成测试套件 嵌套测试用例 测试代码的 ...

  5. 【Python】单元测试框架unitest及其高级应用

    Unittest Unittest是python的一个单元测试框架,但是它不仅适用于单元测试,还适用自动化测试用例的开发与执行.我们可以很方便的使用它组织执行测试用例,使用它提供的丰富的断言方法进行测 ...

  6. python单元测试框架 pyunit

    概况 系统要求 使用PyUnit构建自己的测试 安装 测试用例介绍 创建一个简单测试用例 复用设置代码:创建固件 包含多个测试方法的测试用例类 将测试用例聚合成测试套件 嵌套测试用例 测试代码的放置位 ...

  7. javascript单元测试框架mochajs详解(转载)

    章节目录 关于单元测试的想法 mocha单元测试框架简介 安装mocha 一个简单的例子 mocha支持的断言模块 同步代码测试 异步代码测试 promise代码测试 不建议使用箭头函数 钩子函数 钩 ...

  8. Selenium(十八):unittest单元测试框架(四) HTML测试报告

    1. HTML测试报告 对测试人员来而言,测试的产出很难衡量.换句话说,测试人员的价值比较难以量化和评估,相信这一点对软件测试人员来说深有体会.我们花费了很多时间与精力所做的自动化测试也是如此.所以, ...

  9. 单元测试框架unitest和自动化测试高级应用

    单元测试框架:为了让单元测试代码更容易维护和编写,遵循一定的规范来编写测试用例. 创建被测类calculator.py   #计算器 class count: def _init_(self,a,b) ...

随机推荐

  1. JVM垃圾回收总结

    来自Oracle官方文档,对JVM GC知识整理的清晰易懂,查资料还是看官方的好! 1 GC步骤简述 步骤1:标记 (Marking) 根据对象引用关系,将未被任何对象引用的对象实例标记出来,如下图中 ...

  2. 【移动开发】EditText输入字数限制总结(包括中文输入内存溢出的解决方法)

    限定EditText输入个数的解决方案很多,但是一般主要考虑两点,也就是处理两件事:(1)不同语言字符(英文.中文等)处理方式(2)输入字符达到数目后,是否仍然允许用户输入 第一点,涉及的东东其实蛮多 ...

  3. Makefile自动生成

    automake/autoconf入门作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile ...

  4. mysql-workbench工具update(更新)失败的解决办法

    是因为安全模式的保护,所以我们需要设置一下: 如下:windows下是edit–>preferences–>SQL Editor 把右边的最后一行,"safe update&qu ...

  5. Dynamics CRM 2015 Online Update1 UI界面的更新变化

    听说出  Dynamics CRM 2015 Online  Update1了,立马跑去申请了个30天试用版简单的看了下,UI上的变化还是让人耳目一新的,也可能是被CRM2013的UI蹂躏太久了没 ...

  6. Android初级教程IP拨号器初识广播接受者

    需求:输入ip号码并且保存在本地,监听打电话广播,如果电话号码以0开头,则加上ip区号拨打. 首先定义一个页面布局: <LinearLayout xmlns:android="http ...

  7. Swift基础之:新的访问控制fileprivate和open

    (转载的,暂时没有研究过这类语句,有空看看) 在swift 3中新增加了两种访问控制权限 fileprivate和 open.下面将对这两种新增访问控制做详细介绍. fileprivate 在原有的s ...

  8. 讲究门面的Request

    为什么说Request讲究门面?注意这里所说的门面并非我们常理解的外表的意思,其实是说它使用了门面设计模式,门面的使用主要用于数据安全的考虑.一个大的系统体系的多个子系统之间涉及交互通信.一个系统中的 ...

  9. JAVA之旅(三十)——打印流PrintWriter,合并流,切割文件并且合并,对象的序列化Serializable,管道流,RandomAccessFile,IO其他类,字符编码

    JAVA之旅(三十)--打印流PrintWriter,合并流,切割文件并且合并,对象的序列化Serializable,管道流,RandomAccessFile,IO其他类,字符编码 三十篇了,又是一个 ...

  10. Freemarker中如何遍历List

     Freemarker中如何遍历List(附源码) 关键词(Keyword):Freemarker,Freemarker遍历list 在Freemarker应用中经常会遍历List获取需要的数据, ...