【套件测试】
需要单元测试,给骨架升级junit到5.8.2后支持套件的注解变为@Suite,junit中的包是很多的,可以的话可以到他的官网尽量引入,目前来看没有什么冲突。套件的效果可以见网上的说法。我这里踩到的坑是----有多个注解 会有一个匹配类名来执行测试类的注解,但是这个注解一定要含有总体是在哪个包下面进行扫描的,就是需要注解 selectPackages和 includeClassNamePatterns,搭配起来用。其他的都可以查看网上的一些教程来弄。
【Pom文件升级】
这里用的是层级引用,就是引入了别人的POM文件,方法一是自己新建一个本地同名的他人的pom修改,maven install一下覆盖掉原来的。其次是在自己的项目中进行排除,主要的操作是需要在dependencymanage中将原本的其他以来引入的要重新引入,然后再下方引入需要版本。还有排除的方法 可以借用maven helper来进行操作依赖管理。依赖管理是当项目复杂起来一个很难搞的点,重复引入等情况会层出不穷。
【单元测试覆盖率问题】
idea本身有单元测试覆盖率插件,但是当套件和单元测试结合一起的时候,我们可以知道套件这个下的单元测试覆盖率如果不是点击 右上角的setting,在测试的includepattern中添加上需要覆盖的地方,那么套件就不会显示出我们需要的这些东西。ld需要,他可以点的时候检测是测试套件帮助他将这些东西加上去,比如说跑controller层,因为测试套件也会匹配信息,比如说controller曾套件会跑以controllerTest结尾的测试,然后加上对应的测试类在他的覆盖率里面,这样就可以完成他点击一下就可以完成的步骤。但是由于代码看的不深,目前是只找到了修改的时候会动workspace.xml其中关于覆盖率的信息,本想在他的action前添加拦截器加入进去,但是他是一个脏读机制,数据存储的位置应该是运行时存储位置,没有找到存储位置,(只知道是在KT里面写的,由于工期所致,没有向下深扒)预想做法是按钮,需要跑测试套件时,右键一下,刷新相关的信息到workspace.xml中,保存后覆盖率的存储会读取,这样就完成了一个同步机制并且可以将需要完成。
【利用IDEA PSI修改代码的方法】
【非常推崇IDEA的PSI】经过研究发现,IDEA基本上已经实现了大部分主流需要的语法的语法树,如果有什么需要则可以直接利用Psi进行修改,只需要将其实例化到正确的种类。我用过PSI对Java代码本身、YAML、XML进行修改,对于XML可能寻找修改某些已经存在的节点可以有成熟的快捷的方案,但是对于增删等其他功能,个人觉得PSI的功能是很强劲的,以树的形式去遍历,也是可以得到很好的性能。
【其他的一些单元测试生成技术的比较】
jacoco、evosuite等相关测试生成技术。自己的心得 evosuite是领先的生成技术,但是生成的东西属实没法看,只能跑一下看看代码生成的情况,而对于代码覆盖率idea自带的不够聪明,利用jacoco可以较好的完成覆盖率的情况。但是需要按照一定的配置,idea有几个测试代码生成的功能的插件,都是利用模板生成的,有一个是付费的,模板较多,生成质量不错。JunitGenerator、其他,可以百度得知。