收藏本站 收藏本站
积木网首页 - 软件测试 - 常用手册 - 站长工具 - 技术社区
软件测试 > LoadRunner > 正文

首页 | 领域细分: 游戏测试 安全测试 手机测试 Web测试 | 技术研究: 单元测试 入门教程 用例设计 性能测试 功能测试 | 测试职场: 面试精选 职场发展 面试试题

测试管理: 配置及流程 - 需求管理 - 质量验收 - 缺陷管理 - 其它管理相关 | 开发语言: PHP技巧 - PHP基础 - PHP实例 - PHP错误代码

测试工具: LoadRunner JiRa QuickTestPro RoBot WinRunner TestDirector 其它测试工具 | 数据库: Mysql数据库 Oracle数据库 CSS/DIV基础 HTML基础

单元测试假成功和假失败的避免方法

来源:互联网 日期:2012-09-28 20:00
 1 基本信息

  摘要:描述了单元测试要避免的几个问题,并给出几个最佳实践建议。

  2 假成功的单元测试

  1. 问题描述:

  在testXXX方法中,看到有这样的测试代码:

public void testInvoke(){
try{

assertEquals(a,b);
}
catch(Exception e){

}
}

  2. 问题分析:

  如果运行过程中没有出现异常,整个流程不会有任何问题,JUnit也认为整个测试正常通过。

  但是一旦try中的某段代码运行出错,我们会发现由于在assertEquals被调用之前就已经跳到catch中,所以assertEquals并没有被执行,而catch及之后的代码中并没有相应的assertEquals语句,因此JUnit认为这个testXXX方法对应的测试用例正常通过,我们被结果欺骗了。

  3. 解决方法:

  将assertEquals语句移道try…catch之外,变成如下的代码样式:

public void testInvoke(){
Object a;
Object b;
try{

// assertEquals(a,b);
}
catch(Exception e){

}
assertEquals(a,b);
}

  3 假失败的单元测试

  有的时候被测试方法在申明的时候有throws语句,那么单元测试代码应该小心处理这个问题.

  如果测试方法直接throws被测试方法所扔出的异常,则在被测试方法扔出这个异常的时候,该单元测试被认为是失败;但是作为被测试方法来讲,扔出该异常可能是正常的处理逻辑,而不能被认定是代码有错误。称这种情况为“假失败”的单元测试。

  4 最佳实践

  单元测试最好不要有try/catch这些内容,这些内容应该是正式代码中处理的。

  单元测试只要在故意测试异常时才应该用到try/catch,如需要在某个环境下是否抛出某个异常;而其它情况try/catch应该避免使用。

本周排行

别人正在浏览

强悍的草根IT技术社区,这里应该有您想要的!
Copyright © 2010 Gimoo.Net. All Rights Rreserved  京ICP备05050695号