JUnit测试进阶(Private测试)


前言

在单元测试中,由于私有方法(Private Method)无法直接被调用,因此对私有方法进行测试成为一项难题。一个可行的方法是:在测试时将私有方法改变为公有方法(Public Method),在测试完成后再将其修改为私有方法。然而,该方法操作过程比较复杂,不利于自动化测试的开展。因此,针对私有方法的测试多采用间接调用或利用反射机制进行


以图中三角型程序Triangle为例,说明JUnit对私有方法的测试方法。在Triangle中,diffOfBorders方法用于判断两条边的长度差异,为程序判断给定三条边是否满足“两条边之差是否小于第三条边”提供服。因此,diffOfBorders方法是一个私有方法。若直接调用diffOfBorders进行测试,就会报错not
visible错误,那么,我们该如何解决呢?


在这里插入图片描述




一、间接调用

如前所叙,diffOfBorders为判断三条边是否满足三角形条件服务,被isTriangle方法调用。因此,可通过测试isTriangle来间接测试diffOfBorders。下图给出了一个间接调用示例。对isTriangle进行调用时,分别以<4,3>, < 3,4>,<4,4>作为输入来调用diffOfBorders,基本满足了diffOfBorders各种逻辑覆盖和路径覆盖需求


在这里插入图片描述



二、Java反射机制调用

除间接调用外,还可利用Java反射机制实现对私有方法的单元测试。通过反射,研发人员可以在程序运行时获取加载类中的所有访问属性(包括public
,private,protected等)的成员方法和成员变量,下图给出一个应用Java反射机制的私有方法测试用例testdiffOfBorders。通过方法名和参数信息获取testdiffOf-
Borders方法后,可将其设置为可访问权限。此时,便可通过method提供的invoke方法调用testdiffOfBo-
rders的功能,实现对testdiffOfBorders的单元测试


在这里插入图片描述

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
软件测试是一个复杂而重要的领域,进阶学习路线可以帮助测试工程师提升技术水平和职业发展。以下是一个软件测试进阶学习路线的示例: 1. 深入了解软件开发过程:了解软件开发的不同阶段和常用的开发方法,例如瀑布模型、敏捷开发等。这有助于测试工程师更好地理解软件的构建过程和开发者的思维方式。 2. 学习测试设计技术:掌握不同的测试设计技术,例如等价类划分、边界值分析、决策表等。这些技术可以帮助测试工程师设计有效的测试用例,提高测试覆盖率。 3. 掌握自动化测试工具和框架:学习使用常见的自动化测试工具和框架,例如Selenium、Appium、JUnit等。自动化测试可以提高测试效率和准确性,同时也是测试工程师的重要技能之一。 4. 学习性能测试和安全测试:了解性能测试和安全测试的基本概念和方法。性能测试可以评估系统的性能和稳定性,安全测试可以发现系统的安全漏洞和风险。 5. 学习持续集成和持续交付:了解持续集成和持续交付的概念和实践,学习使用相关工具和技术,例如Jenkins、Docker等。这有助于测试工程师与开发团队更好地协作,提高软件交付的质量和效率。 6. 深入了解测试管理和质量保证:学习测试管理的基本原理和方法,包括测试计划、测试报告、缺陷管理等。同时了解质量保证的概念和实践,例如代码审查、静态分析等。 7. 持续学习和实践:软件测试领域不断发展和演变,测试工程师需要不断学习新的技术和方法。参加行业会议、培训课程,阅读相关书籍和文章,积极参与实际项目中的测试工作,不断提升自己的技能和经验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大猪猪吃虎虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值