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

  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应该避免使用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
单元测试是软件开发中的一种测试方法,用于对软件系统的单个组件进行测试,以确保其符合要求。黑盒测试和白盒测试是两种常见的单元测试方法。 黑盒测试是指在不知道系统内部实现细节的情况下,仅根据系统的输入和输出来测试系统的功能。黑盒测试通常使用一组测试用例来检查系统的正确性和完整性。黑盒测试方法适用于测试软件系统的功能,例如输入验证、输出正确性和对不同输入的响应。 白盒测试是指通过了解系统的内部实现细节并检查代码来测试系统的正确性。白盒测试通常使用基于代码的测试方法来检查系统的正确性和完整性。白盒测试方法适用于测试软件系统的结构,例如代码覆盖率、路径覆盖率和条件覆盖率等。 下面是使用黑盒及白盒测试进行单元测试方法和过程: 1. 确定测试目标和测试范围。 2. 根据测试目标和测试范围,编写测试用例。 3. 使用黑盒测试方法运行测试用例,记录测试结果。 4. 使用白盒测试方法检查代码并运行测试用例,记录测试结果。 5. 分析测试结果,找出系统中的错误和缺陷。 6. 修复错误和缺陷,并重新运行测试用例。 7. 重复步骤 5 和 6 直到测试结果满足要求。 8. 编写测试报告,记录测试过程和结果。 9. 如果测试结果不满足要求,则重新设计测试用例,并重复步骤 3 到 8。 总之,使用黑盒及白盒测试进行单元测试方法和过程是通过测试用例来检查系统的正确性和完整性,找出系统中的错误和缺陷,并修复它们,最终得出测试报告。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值