目录

JUnit测试进阶(Private测试)

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的单元测试

本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
wisdom_zhe12 分钟前
Spring Boot 日志 配置 SLF4J 和 Logback
java·spring boot·logback
揣晓丹23 分钟前
JAVA实战开源项目:校园失物招领系统(Vue+SpringBoot) 附源码
java·开发语言·vue.js·spring boot·开源
于过33 分钟前
Spring注解编程模型
java·后端
北随琛烬入34 分钟前
Spark(10)配置Hadoop集群-集群配置
java·hadoop·spark
顽疲40 分钟前
从零用java实现 小红书 springboot vue uniapp (11)集成AI聊天机器人
java·vue.js·spring boot·ai
Yan-英杰1 小时前
DeepSeek-R1模型现已登录亚马逊云科技
java·大数据·人工智能·科技·机器学习·云计算·deepseek
TDengine (老段)1 小时前
TDengine 中的日志系统
java·大数据·数据库·物联网·时序数据库·tdengine·iotdb
不想学习!!1 小时前
linux之进程控制
java·linux·服务器
nlog3n2 小时前
Java外观模式详解
java·开发语言·外观模式
Mryan20052 小时前
SpringBoot项目报错: 缺少 Validation
java·spring boot