当前位置: 首页 > news >正文

北京网站建设好360建

北京网站建设好,360建,app开发公司招聘,湖南湘信建设工程有限公司网站背景介绍 博主目前要做的工作需要将一个java项目的所有RD手写的测试用例和被测方法对应起来#xff0c;最后将得到的结果存入一个json文件。 本教程以项目GitHub - binance/binance-connector-java 为例。 结果展示 最终会得到一个 funcTestMap.json#xff0c;里面存放着… 背景介绍 博主目前要做的工作需要将一个java项目的所有RD手写的测试用例和被测方法对应起来最后将得到的结果存入一个json文件。 本教程以项目GitHub - binance/binance-connector-java 为例。 结果展示 最终会得到一个 funcTestMap.json里面存放着focal func(被测方法)和对应的test case. 实现原理 1. 解析被测项目的src\main目录下的源码将每一个java源文件中的方法声明(MethodDeclaration)存进一个map其中key是方法名value是完整方法题。 2. 解析被测项目的src\test\java\unit目录下的测试文件对于每一个测试文件中的方法声明如果方法名以test开头则认为是测试用例进入下一步。 3. 解析每一个测试用例获取该测试用例的调用的所有方法MethodCallExpr如果该方法存在第一步所得到的map当中则认为该方法是测试用例的被测方法和测试用例一起存入结果json数组中。 局限性 没有考虑到overload的情况。由于是根据方法名称而不是名称参数类型作为方法的标识符。在存入阶段遇到重载的方法后面进的会覆盖掉之前的在召回阶段仅仅使用方法名称来查找方法体有一定的几率找到错误的被测方法。 完整代码 项目结构如下 JsonCreator.java package org.example;import com.github.javaparser.ast.body.MethodDeclaration; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import java.util.Map; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.charset.StandardCharsets;public class JsonCreator {public static void createAndSaveJson1(MapString, MethodDeclaration map, String saveJsonPath) {JsonArray jsonArray new JsonArray();for (Map.EntryString, MethodDeclaration entry : map.entrySet()) {JsonObject keyValue new JsonObject();keyValue.addProperty(key, entry.getKey());keyValue.addProperty(value, String.valueOf(entry.getValue()));jsonArray.add(keyValue);}Gson gson new GsonBuilder().setPrettyPrinting().create();String jsonOutput gson.toJson(jsonArray);try {Files.write(Paths.get(saveJsonPath), jsonOutput.getBytes(StandardCharsets.UTF_8));System.out.println(JSON file saved successfully to saveJsonPath);} catch (Exception e) {System.err.println(Error writing JSON to file: e.getMessage());}}public static void createAndSaveJson2(MapMethodDeclaration, MethodDeclaration map, String saveJsonPath) {JsonArray jsonArray new JsonArray();for (Map.EntryMethodDeclaration, MethodDeclaration entry : map.entrySet()) {JsonObject keyValue new JsonObject();keyValue.addProperty(focal func, String.valueOf(entry.getKey()));keyValue.addProperty(test case, String.valueOf(entry.getValue()));jsonArray.add(keyValue);}Gson gson new GsonBuilder().setPrettyPrinting().create();String jsonOutput gson.toJson(jsonArray);try {Files.write(Paths.get(saveJsonPath), jsonOutput.getBytes(StandardCharsets.UTF_8));System.out.println(JSON file saved successfully to saveJsonPath);} catch (Exception e) {System.err.println(Error writing JSON to file: e.getMessage());}}} TestMethodAnalyzer.java package org.example;import com.github.javaparser.ParseResult; import com.github.javaparser.ast.CompilationUnit; import com.github.javaparser.ast.body.MethodDeclaration; import com.github.javaparser.ast.comments.JavadocComment; import com.github.javaparser.ast.expr.MethodCallExpr; import com.github.javaparser.ast.visitor.VoidVisitorAdapter; import com.github.javaparser.utils.SourceRoot;import java.io.IOException; import java.nio.file.Paths; import java.util.HashMap; import java.util.List; import java.util.Map;public class TestMethodAnalyzer {private static final MapString, MethodDeclaration methodMap new HashMap();private static final MapMethodDeclaration, MethodDeclaration funcTestMap new HashMap();public static void main(String[] args) throws IOException {// Load and index all Java files from the main source directorySourceRoot mainSourceRoot new SourceRoot(Paths.get(C:\\dataset\\binance-connector-java\\src\\main));mainSourceRoot.tryToParseParallelized().forEach(TestMethodAnalyzer::indexMethodDeclarations);System.out.println(The size of the map is: methodMap.size());String saveJsonPath1 C:\\codes\\Java\\extract_func_test_pair\\src\\main\\java\\org\\methodMap.json;JsonCreator.createAndSaveJson1(methodMap,saveJsonPath1);// Now parse the test filesSourceRoot testSourceRoot new SourceRoot(Paths.get(C:\\dataset\\binance-connector-java\\src\\test\\java\\unit));testSourceRoot.tryToParseParallelized().forEach(TestMethodAnalyzer::analyzeTestClass);System.out.println(The size of the map is: funcTestMap.size());String saveJsonPath2 C:\\codes\\Java\\extract_func_test_pair\\src\\main\\java\\org\\funcTestMap.json;JsonCreator.createAndSaveJson2(funcTestMap,saveJsonPath2);}private static void indexMethodDeclarations(ParseResultCompilationUnit result) {result.ifSuccessful(cu - cu.findAll(MethodDeclaration.class).forEach(md - {md.setJavadocComment((JavadocComment) null);methodMap.put(md.getNameAsString(), md);}));}public static void analyzeTestClass(ParseResultCompilationUnit result) {result.ifSuccessful(cu - {cu.accept(new VoidVisitorAdapterVoid() {Overridepublic void visit(MethodDeclaration md, Void arg) {super.visit(md, arg);if (md.getNameAsString().startsWith(test)) {analyzeTestMethods(md);}}}, null);});}private static void analyzeTestMethods(MethodDeclaration md) {ListMethodCallExpr methodCalls md.findAll(MethodCallExpr.class);for (MethodCallExpr call : methodCalls) {MethodDeclaration method methodMap.get(call.getNameAsString());if (method ! null) {System.out.println(Test Method: );System.out.println(md);System.out.println(Calls Method body:);method.setJavadocComment((JavadocComment)null);System.out.println(method);System.out.println(---------------------------------------);funcTestMap.put(method,md);}}}} maven依赖 只有两个(位于pom.xml) dependenciesdependencygroupIdcom.google.code.gson/groupIdartifactIdgson/artifactIdversion2.10.1/version/dependencydependencygroupIdcom.github.javaparser/groupIdartifactIdjavaparser-symbol-solver-core/artifactIdversion3.26.0/version/dependency /dependencies
http://www.pierceye.com/news/672582/

相关文章:

  • 做游戏网站要备案吗群晖做网站需要备案吗
  • 网站制作教程为什么语音转文字里面没有海南的
  • 怎么让别人看到自己做的网站地信的网站建设
  • 网站主体注销泰安新闻视频在线
  • 怀柔网站建设优化seo瓯北网站制作公司
  • 福田住房和建设局网站官网做自己点击网站
  • 临沂市建设局网站简介佛山建网站
  • 哪种类型的网站比较难做阿里云宝塔安装wordpress
  • 购物网站起名网站建设皿金手指排名
  • 河北省住房和城市建设厅网站怎么做cpa网站
  • 网站备案 取名资讯通不过软文投放平台有哪些?
  • 民治做网站多少钱好看的企业网站首页
  • 腾讯域名怎么建设网站客户管理系统免费
  • 承德网站建设报价网站建设中企动力最佳a5
  • 图书馆第一代网站建设海口会计报名网站
  • 网站设计师简介中国工厂网站官方网站
  • 广州移动 网站建设十大职业资格培训机构
  • 网站建设维护协议书网站开发程序用什么好
  • 零基础做网站教程天猫商城商品来源
  • 广州知名网站建设公司教育机构培训
  • 做游戏解说上传在什么网站好企业网站定制
  • 用iis浏览网站南宁网站seo大概多少钱
  • 如何用手机网站做淘宝客wordpress 免费 旅游
  • 青岛网站建设网站制作seo顾问服务福建
  • phpcms网站织梦 网站栏目管理 很慢
  • 金融网站 改版方案seo推广优化培训
  • 博物馆设计网站推荐网站布局有哪些常见的
  • 外贸网站建设980ps软件需要付费吗
  • 网站开发后的经验总结北新泾街道网站建设
  • 深圳市南山区住房和建设局网站国内知名网站建设伺