首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室软件测试频道
Google
首页 资讯动态 测试技术 测试工具 行业软件测试 测试管理 测试下载 经验分享 软件质量 其他技术 RSS订阅 博客 论坛
您现在的位置: 中国IT实验室 >> 软件测试 >> 测试技术 >> 单元测试 >> 正文

单元测试入门基础


2、 运行测试的时间太长了。
    合适的测试是不会让这种情况发生的。实际上,大多数测试的执行都是非常快的,因此你在几秒之内就可以运行成千上万个测试。但是有时某些测试会花费很长的时间。这时,需要把这些耗时的测试和其他测试分开。通常可以每天运行这种测试一次,或者几天一次。

3、 测试代码并不是我的工作。
    你的工作就是保证代码能够正确的完成你的行为,恰恰相反,测试代码正是你不可缺少的工作。

4、 我并不清楚代码的行为,所以也就无从测试。
    如果你实在不清楚代码的行为,那么估计现在并不是编码的时候。如果你并不知道代码的行为,那么你又如何知道你编写的代码是正确的呢?

5、 但是这些代码都能够编译通过。
    我们前面已经说过,代码通过编译只是验证它的语法通过。但并不能保证它的行为就一定正确。

6、 公司请我来是为了写代码,而不是写测试。
    公司付给你薪水是为了让你编写产品代码,而单元测试大体上是一个工具,是一个和编辑器、开发环境、编译器等处于同一位置的工具。

7、 如果我让测试员或者QA(Quality Assurance)人员没有工作,那么我会觉得很内疚。

    你并不需要担心这些。请记住,我们在此只是谈论单元测试,而它只是一种针对源码的、低层次的,为程序员而设计的测试。在整个项目中,还有其他的很多测试需要这些人来完成,如:功能测试、验收测试、性能测试、环境测试、有效性测试、正确性测试、正规分析等等。

8、 我的公司并不会让我在真实系统中运行单元测试。
    我们所讨论的只是针对开发者的单元测试。也就是说,如果你可以在其他的环境下(例如在正式的产品系统中)运行这些测试的话,那么它们就不再是单元测试,而是其他类型的测试了。实际上,你可以在你的本机运行单元测试,使用你自己的数据库,或者使用mock 对象。


测试代码编写


  多数讲述单元测试的文章都是以Java为例,本文以C++为例,后半部分所介绍的单元测试工具也只介绍C++单元测试工具。下面的示例代码的开发环境是VC6.0。

产品类:
class CMyClass
{
public:
    int Add(int i, int j);
    CMyClass();
    virtual ~CMyClass();

private:
    int mAge;      //年龄
    CString mPhase; //年龄阶段,如"少年","青年"
};

建立对应的测试类CMyClassTester,为了节约编幅,只列出源文件的代码:
void CMyClassTester::CaseBegin()
{
    //pObj是CMyClassTester类的成员变量,是被测试类的对象的指针,
    //为求简单,所有的测试类都可以用pObj命名被测试对象的指针。
    pObj = new CMyClass();
}

void CMyClassTester::CaseEnd()
{
    delete pObj;
}
测试类的函数CaseBegin()和CaseEnd()建立和销毁被测试对象,每个测试用例的开头都要调用CaseBegin(),结尾都要调用CaseEnd()。

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页

【责编:Luzi】

中国IT教育

相关产品和培训
文章评论
 专题推荐

 ·防范Linux病毒 打造没有病毒的乐土…
 ·巧用网络流量 打造健康内网…
 ·带你领略windows系统“另类”安装
 ·无线路由器设置从入门到精通
 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·企业网管如何部署你的网络监控系统?
 ·2008年软考官方指定教材及辅导书下载专题
 ·负载均衡技术方案攻略
 ·中国IT实验室2007年技术热点盘点
 最近更新
 博客论点
 频道精选
 软件测试频道导航