• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

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

发布: 2009-4-09 11:30 | 作者: 不详 | 来源: 测试时代采编 | 查看: 16次 | 进入软件测试论坛讨论

领测软件测试网

1 基本信息

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

2 假成功的单元测试

1. 问题描述:

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

public void testInvoke(){
try{

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

}
}

2. 问题分析:

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

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

 

        将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应该避免使用。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: 单元 失败


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网