写算法时大多依靠简单输入验证,经常遇到小范围输入正常,大范围或特殊情况输入结果错误的问题。所以写程序之前最好先想好几个特殊用例来测试,以验证算法是否正确。单元测试就是个不错的工具,而VS 2012提供了很方便的单元测试功能。
首先创建需要测试的C++项目,如果已有项目,可以跳过这个步骤。然后新建两个文件algs4.h和main.cpp,代码如下:
algs4.h
int add(int a, int b)
{
return a+b;
}
int minus(int a, int b)
{
return a-b;
}
main.cpp
#include "algs4.h"
int main()
{
return 0;
}
待测试项目创建完成。接下来需要在当前解决方案中新建本机单元测试项目,如下图:
完成项目创建之后,为了让测试方法能够访问待测试的代码,需要在测试项目中添加待测试项目的引用。右击测试项目,在属性对话框里找到VC++目录->包含目录
编辑包含目录项,在弹出的对话框中添加待测试项目的文件目录:
完成后就可以在测试项目中引入待测试函数。简单的测试代码如下:
#include "stdafx.h"
#include "CppUnitTest.h"
#include "algs4.h"
using namespaceMicrosoft::VisualStudio::CppUnitTestFramework;
namespace UnitTestAlgs4
{
TEST_CLASS(UnitTest1)
{
public:
TEST_METHOD(TestMethod1)
{
//TODO: 在此输入测试代码
Assert::AreEqual(20,add(10,10));
}
};
}
运行测试时,可以在菜单栏找到测试->运行->所有测试,或者直接右击,选择运行测试
测试结果可以在测试资源管理器中查看:
不过以上的配置只能测试头文件中的代码,而大多情况下头文件中并不包括函数的实现,这时,测试项目仅包含待测试项目的文件目录是不够的,还需要添加对.obj文件的引用。
假设待测试项目的文件及代码如下:
algs4.h
int add(int a, int b);
int minus(int a, int b);
algs4.cpp
#include "algs4.h"
int add(int a, int b)
{
return a+b;
}
int minus(int a, int b)
{
return a-b;
}
main.cpp与上面的一致。
打开测试项目的属性对话框,修改链接器的常规->附加库目录和输入->附加依赖项两个属性:
向附加库目录中添加待测试函数的.obj文件目录
如E:\VS2012\Algorithms4\Algorithms4\Debug
向附加依赖项中仅添加待测试函数的.obj文件名,这里是algs4.obj。
设置好后就能够正常运行测试。
另外,在测试资源管理器中右击测试名,可以分析测试代码的覆盖率。由于当前测试代码没有添加对minus的测试,所以它的已覆盖率是0。覆盖率测试还可以测试条件语句等分支语句的覆盖情况。
分享到:
相关推荐
雨田单元测试系统2.0是拥有独立知识产权的国产测试软件,能够对c文件进行单元测试和集成测试。它以被测单元为纽带,将首次测试以及后续的回归测试有机的关联起来,使测试人员在充分利用历史用例的基础上,集中精力对...
2. 数据库单元测试测试流程介绍 1 2.1. 数据库单元测试的原因 1 2.2. 测试关注点 1 2.3. 测试流程 1 3. 数据库单元测试最佳实践 2 3.1. 数据库单元测试最佳实践 2 3.1.1. 从“易测试的”应用程序体系结构开始。 2 ...
雨田单元测试系统主要设计目标之一即是降低测试人员工作复杂度,因此,在充分了解测试人员的工作特点的基础上,系统提供的各项功能简单、实用且符合测试人员的工作习惯。 4、使用灵活。用户可以根据需要定制测试...
对于关联依赖关系少或者比较简单的类来说,直接使用JUnit就可以轻松的完成测试工作,但是对于关联到其它比较复杂的类或对运行环境有要求的类的单元测试,比如ejb,servlet或Dao等,测试起来或者需要配置特定的环境,...
我们曾经和大家探讨过全面剖析JavaME单元测试理念,其实在Android上实现JUnit单元测试也不是很困难,主要是在配置文件和测试环境上将花费很长时间,下面从四步简单讲一下在Android上实 我们曾经和大家探讨过全面...
gtest单元测试的简单demo,内包含测试阶乘和测试素数两个测试用例,直接运行可以查看结果,关于其配置的相关信息可以参考文章:https://blog.csdn.net/didi_ya/article/details/123212877
一个单元测试如何 Hacktoberfest 2020的节点测试 这是一组基本的Node路由和用于测试的Mongo模型设置。 欢迎您为路线和模型创建测试套件。 创建一个概述要完成的测试的问题,然后提交涵盖该测试的PR。 描述NodeJS中...
首先,我们介绍了JUnit和JUnitEE结构的简单概述,紧接着我们介绍了如何在JUnit和JUnitEE测试框架中开发,配置以及安装单元测试。最后,我们阐述了如何在应用软件服务器环境中布署和执行单元测试。JUnit测试框架JUnit...
对于单元测试这个知识点,其实很多开发者是不太接触的,包括笔者,在实习之前也并未实用过单元测试,或者说并没感受到单元测试的好处。 对于bug的调试,笔者之前更倾向于使用log和断点调试,可以说会了这两个,大...
JEC JUTA项目 JEC JUTA是一个项目,专注于JEC应用程序的单元测试的可移植性。 juta软件包包含摘要层,用于基于JavaScript单元测试API(JUTA)规范创建单元测试框架。 JUTA允许开发人员独立于他们使用的单元测试框架...
Unity Test是为C构建的单元测试框架,重点在于使用嵌入式工具链。 该项目旨在测试针对大型和小型微控制器的代码。 核心项目是一个C文件和一对标头,使它可以轻松添加到您现有的构建设置中。 您可以使用任何所需的...
它具有用于定义单元测试的简单界面,几乎不影响开发人员。 测试在单独的地址空间中运行,因此Check可以捕获断言失败和导致分段错误或其他信号的代码错误。 单元测试的输出可在源代码编辑器和IDE中使用。 请参阅了解...
8.3.2 单元测试工作产品必须纳入配置管理 38 8.3.3 必须制订覆盖率指标和质量目标来指导和验收单元测试 38 8.3.4 加强详细设计文档评审 39 8.4 单元测试者技能的提高 39 8.4.1 加强对单元测试人员的技能...
介绍这个示例项目展示了如何分别运行单元测试和集成测试仅通过测试安装应用程序 mvn clean install仅运行测试 mvn test使用测试和集成测试安装应用程序 mvn clean install -Pintegration-test运行集成测试 mvn ...
终端,并且其配置参数可以根据测试内容的需要进行设置;二是要探 索如何将所实现的软件终端与主流性能测试工具LoadRunner相集成 来完成对MCU的性能测试。同时,还要考虑软件终端的可实现性, 如协议栈是否开源,以及...
8.3.2 单元测试工作产品必须纳入配置管理 38 8.3.3 必须制订覆盖率指标和质量目标来指导和验收单元测试 38 8.3.4 加强详细设计文档评审 39 8.4 单元测试者技能的提高 39 8.4.1 加强对单元测试人员的技能...
所以要进行dao的测试我需要从Spring的连接oracle的context中获取dao的实例出来,这里我使用的是spring-mockspring-mock使用比较简单的,只需要设置spring的配置文件路径就可以获得上下文了这里需要注意的是这个...
本文实例讲述了PHP单元测试PHPUnit简单用法。分享给大家供大家参考,具体如下: windows开发环境下,PHP使用单元测试可以使用PHPUnit。 安装 首先下载PHPUnit,官网:https://phpunit.de/ 根据自己的PHP版本下载...
本项目以为基础,进行简易封装。 安装 $ composer create-project limingxinleo/phalcon-basic-project 扩展介绍 框架所用的基础扩展 用户内部服务通信的RPC扩展,基于Swoole Tcp Server & Client 开发。期待Swoole...
安装composer require ronappleton/static-web用法此使用示例仅涵盖单元测试的用途,但不限于此,而是请仅将其用于本地测试环境,因为它是单线程的,因此会阻塞并且在生产环境中绝不可用。 在测试类的顶部添加2条use...