方法定位使用,名如其名。当前开源社区中有很多很多基于接口的测试工具,但在实际的开发过程中,有很多场景都需要测试调用某个方法; 或在项目出现业务漏洞时,也需要直接用设置好的参数来判断业务接口的某个方法是否可行,来以此定位bug位置。 厌倦了"test"接口中,new 方法调用的这种手法,是时候有必要去实现一个去定位方法与参数,简化方法调用的工具了。 git地址:https://github.com/LeYunone/wayLocation 目前屏蔽部分功能,还在开发中
拆箱即用,0侵入性,搭载在本项目中,自由选择项目中的方法,通过className[模糊] + methodName[模糊] 定位。
注意点:在项目启动时会生成本项目的类名与方法名搜索库,在项目结束后悔自动删除搜索库文件,即要注意:确保项目的正常启动和结束
因为工具属于页面装载,所以只用明白各输入框、按钮的出现意义,以下,从页面从上往下,从左往右介绍。
2022-4-11: 0.0.1-SNAPSHOT:
2022-4-12: 0.0.2.RELEASE;
2022-4-14:0.0.3-SNAPSHOT
依赖版本:0.0.X > 0.0.X-SNAPSHOT > 0.0.X.RELEASE
<dependency>
<groupId>xyz.leyuna</groupId>
<artifactId>waylocation-spring-boot-start</artifactId>
<version>0.0.3</version>
</dependency>
快照版-SNAPSHOT需要引入-SNAPSHOT仓库:
<repositories>
<repository>
<id>snapshots</id>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
XXXXX[项目地址]/waylocation
waylocation.saveType=XXX
waylocation.savePath = xxx
saveType:决定历史数据[历史类、历史方法、历史调用]的保存方式。
- “object”,默认值,保存本次测试的所有信息,仅当前会话应用有用
- “cookie”,仅保留少量信息,但是基于cookie会话
- “file”,写入机械磁盘中,除非手动清除,则永不消失,生成的excel文档:savePath+/history.xlsx
savePath:保存方式为file时,记录文档的保存路径。 默认为C:/waylocation
依赖 | 版本号 |
---|---|
SpringBoot | 2.3.7.RELEASE |
Lombok | 1.18.16 |
Lucene | 7.6.0 |
FastJson | 1.2.47 |
Mybatis | 3.5.2 |
Jsqlparser | 2.1 |
点击输入框,查询历史使用类,加载至搜索库中选择。
点击输入框,输入任一字符,在项目搜索库中,以此字符 例如字符为Test,拆为T、e、s、t在数据库中最佳匹配到相关类类名,加载至输入框中。
点击输入框,输入任一字符,但是不选择输入框中,在后续操作中属于类名模糊场景处理。
点击输入框,如果类名输入框中有值[即在上述场景一、二、三中],则出现两类分支:
如果选择了类名输入框的值,属于精准类名,在输入框中加载该类下的方法。
如果没有选择输入框的值,属于类名模糊场景,根据该类名在数据库中模糊搜索到最佳匹配类,加载该类方法。
点击输入框,如果类名输入框没有值:输入框加载历史使用方法,并且自动装填本次历史使用的类名。
点击输入框,在精准类名的场景或是类名模糊场景下,输入任一字符,在搜索库中模糊搜索,加载至输入框中。
入参解析。
一定在确定了类,即点击了类名搜索的输入框后触发。
定义到方法后,解析该方法的入参。
解析场景:
1、多参,页面上出现参数个数的输入框。
2、参数为int、Integer等的基本类型或包装类型,赋予jdk规则的默认值。
3、参数为本项目类,迭代解析该类层级,迭代规则:
参数为int、Integer等基本类型或包装类型,赋予默认值。
参数为本项目对象,迭代本对象到当前循环。
参数为集合,迭代其泛型到当前循环,获得一个新对象加入到集合中。
参数为非项目对象,不解析,返回null。
参数为抽象属性[接口和接口类],不解析,返回null。
4、参数为集合,迭代其泛型到当前循环,获得一个新对象加入到集合中。
出参为void,返回void。
出参有值,则解析情况为入参相同逻辑。
导出本次页面面板值,即包括:
1、类名
2、方法名
3、入参
4、出参结果或出参结构 [看有无调用]
保存到自定义路径,工具规定模板Excel
展示历史调用,选择一条填充本次测试数据,包括:
1、类名
2、方法名
3、入参
4、出参结果
方法调用,在根据文档填写好入参前提下。
方法调用类,invoke(Object )
Object,提供情况:
当方法涉及ioc自动注入属性时,从容器中根据字节码取出。
当方法没有无参构造器时,默认从ioc中取出,其次是自动实现本方法类最低限度的一个构造器[随机赋值]
当方法场景不属于上述情况时,通过newInstance()获取
当方法为普通方法,即无数据库操作时,调用方法,返回结果
当方法涉及数据库操作时,调用方法。
返回:
1、该方法涉及的数据库表以及表操作
2、该方法数据库操作的数据展示
3、回滚事项[伪回滚],即实际操作了插入,记录插入数据的sql,对sql分析进行逆执行。
选择并发量,由工具自定义接口去实现并发方法实现
待开发
待开发