单元测试初体验

本文章转载于搜狗测试

单元测试初体验

背景:总结最近一段时间内崩溃,发现输入法核心层面的崩溃比较多而且好多是黑盒测试手段难以模拟的,比如说传入的单词不合法等情况,为解决该问题,想要尝试做单元测试,看看能不能解决。

一、环境搭建:

Gtest是google提供的单元测试框架,因此本次也是沿用该框架。搭建步骤网上有很多可以参考的资料,我这边就不赘述。可以参考下面的文章:

http://www.cnblogs.com/coderzh/archive/2009/03/31/1426758.html

注意事项:

(1)我的被测工程是x64的,因此gtest 编译也需要是x64的

(2)第二 开发工程的环境是VS2015,因此gtest工程编译也最好使用VS2015

二、用例编写步骤

(1)确定需要做单元测试的类以及接口

(2)环境初始化

(3)针对每个参数做容错:根据参数的类型、范围、含义

(4)检验结果

三、实例应用

本用例是要对用户词库的加载函数进行单元测试,每次都需要

将词库文件加载到内存中,然后在对函数参数进行各种校验。

问题:

这样写的话,每个case都会很冗余,每次都要从文件中加载词库到内存中

再做操作,name有木有什么办法可以所有用例执行前就将环境初始化,执行完毕,

再恢复呢。Gtest还真提供了此类功能:可以注册全局事件,再所有case执行之前

做一些环境初始化操作,case执行完毕之后,还可以做一些清理工作。

要实现全局事件,必须写一个类,继承testing::Environment类,实现里面的SetUp和TearDown方法。

1. SetUp()方法在所有案例执行前执行

单元测试初体验_第1张图片

2. TearDown()方法在所有案例执行后执行

单元测试初体验_第2张图片

在main函数中进行注册声明:

单元测试初体验_第3张图片

这样优化之后,我的用例就简洁多啦:

单元测试初体验_第4张图片

除了全局事件之外,gtest的事件机制还包括:

(1)TestSuite级别的,在某一批案例中第一个案例前,最后一个案例执行后。

(2) TestCase级别的,每个TestCase前后。

具体使用哪一种根据具体需求而定,有兴趣的童鞋可以去详细了解下。

你可能感兴趣的:(单元测试初体验)