idea插件完成junit代码生成,和springboot代码示例

news/2024/11/30 12:52:14/

在idea环境下,可以用过插件的方式自动生成juint模板代码。不过具体要需要自己手动编写。
1、安装插件
打开idea,file–settings–plugins,搜索和安装插件(JunitGenerator V2.0和JUnit),安装后,后面的两个勾选都必须选中。
我仅安装JunitGenerator V2.0插件,安装成功后发现两个都存在了。JunitGenerator V2.0为代码生成必要的,JUnit为运行juint单元测试必要的。
在这里插入图片描述
2、配置junit
安装完成插件后,需要重启idea。之后打开settings–other settings,可以看到如下的插件配置页面
(1)、完成如下图的配置
Output Path配置为:

${SOURCEPATH}/../../test/java/${PACKAGE}/${FILENAME}

在这里插入图片描述
(2)、切换到juint4模板页面,进行如下修改
在这里插入图片描述
附完整我的junit4模板配置

######################################################################################## 
## 
## Available variables: 
##         $entryList.methodList - List of method composites 
##         $entryList.privateMethodList - List of private method composites 
##         $entryList.fieldList - ArrayList of class scope field names 
##         $entryList.className - class name 
##         $entryList.packageName - package name 
##         $today - Todays date in MM/dd/yyyy format 
## 
##            MethodComposite variables: 
##                $method.name - Method Name 
##                $method.signature - Full method signature in String form 
##                $method.reflectionCode - list of strings representing commented out reflection code to access method (Private Methods) 
##                $method.paramNames - List of Strings representing the method's parameters' names 
##                $method.paramClasses - List of Strings representing the method's parameters' classes 
## 
## You can configure the output class name using "testClass" variable below. 
## Here are some examples: 
## Test${entry.ClassName} - will produce TestSomeClass 
## ${entry.className}Test - will produce SomeClassTest 
## 
######################################################################################## 
## 
#macro (cap $strIn)$strIn.valueOf($strIn.charAt(0)).toUpperCase()$strIn.substring(1)#end 
## Iterate through the list and generate testcase for every entry. 
#foreach ($entry in $entryList) 
#set( $testClass="${entry.className}Test") 
## 
package $entry.packageName; import org.junit.Test; 
import org.junit.Before; 
import org.junit.After; 
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;/** 
* ${entry.className} Tester. 
* 
* @author <weisian> 
* @since <pre>$today</pre> 
* @version 1.0 
*/ 
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {PlatformApplication.class}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class $testClass { @Before
public void before() throws Exception { 
} @After
public void after() throws Exception { 
} #foreach($method in $entry.methodList) 
/** 
* 
* Method: $method.signature 
* 
*/ 
@Test
public void test#cap(${method.name})() throws Exception { 
//TODO: Test goes here... 
} #end #foreach($method in $entry.privateMethodList) 
/** 
* 
* Method: $method.signature 
* 
*/ 
@Test
public void test#cap(${method.name})() throws Exception { 
//TODO: Test goes here... 
#foreach($string in $method.reflectionCode) 
$string 
#end 
} #end 
} 
#end

3、代码引入junit的必要pom

   <!-- springboot Test --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- https://mvnrepository.com/artifact/junit/junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency>

4、生成需要的junitTest文件
打开需要生成测试的源文件,在页面上右键选择generate,选择junit Test,选择JUnit4
在这里插入图片描述
可以看到自动生成*Test.java文件,文件路径和源文件一致,仅挂载在test资源下
在这里插入图片描述
这里看到报错是因为启动类我们没有在junit 4模板中导入包,如果模板配置加上导入启动类包的代码,就不会报错。模板未配置的话,也可以自己手动导入包

5、如果是第一次生成test目录的化,需要修改目录属性
(1)、在src目录上,右键按照下图配置成Sources Root
在这里插入图片描述
(2)、在test目录上,右键按照下图配置成Test Sources Root
在这里插入图片描述
6、模板生成的会是源代码中所有定义方法的测试方法,都为空,可以自己调整代码进行数据模拟测试。
一次启动会运行所有的测试方法,每一个测试方法都会先执行一下before,执行完成之后在执行一次after。
如下实例:

package XX.goods.controller;import com.alibaba.fastjson.JSON;
import com.XX.PlatformApplication;
import com.XX.model.ResponseModel;
import com.XX.goods.api.GoodsRepairService;
import com.XX.goods.model.GoodsRepair;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;import org.springframework.beans.factory.annotation.Autowired;/*** GoodsRepairController Tester.** @author <weisian>* @version 1.0* @since <pre>05/19/2023</pre>*/
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {PlatformApplication.class}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)public class GoodsRepairControllerTest {@Autowiredprivate GoodsRepairService goodsRepairService;@Autowiredprivate GoodsRepairController goodsRepairController;@Beforepublic void before() throws Exception {System.out.println("before");}@Afterpublic void after() throws Exception {System.out.println("after");}@Testpublic void testAddSubmit() throws Exception {System.out.println("testAddSubmit");GoodsRepair byId = goodsRepairService.getById("1b6ea48be18e5576aef49f8f60653888");System.out.println("11" + JSON.toJSONString(byId));}@Testpublic void testFindMyRepairList() throws Exception {System.out.println("testFindMyRepairList");ResponseModel byId = goodsRepairController.getById("", null, null);System.out.println("22" + JSON.toJSONString(byId));}} 

7、右键执行单元测试类查看效果
执行:
在这里插入图片描述
效果:
在这里插入图片描述
上图是全部的日志,也可以点击单个方法查看单个方法的运行日志:
在这里插入图片描述

总结:
idea下需要先安装好插件,重启idea后,配置模板,修改源代码pom后,指定源代码文件生成对应的test工具类,如果是第一次生成,需要修改目录属性。之后就可以根据我们需要编写测试代码了。
运行juint工具类,实际上相当于启动容器后,在调用指定类的所有测试方法。关于注入service时,一定要是@Autowired从容器中获取,不然在before中new serviceImpl,只能引用成功service本身的方法,如果service还引用其他service,就无法满足。

学海无涯苦作舟!!!


http://www.ppmy.cn/news/71956.html

相关文章

python正则表达式-正则方法

目录 一、re模块中常用函数 二、search(pattern,string) 三、match(pattern,string) 四、findall(pattern,string,flags) 五、compile 编译 一、re模块中常用函数 1、re.I 匹配大小写不敏感&#xff1b;2、re.M 多行匹配&#xff0c;影响到^和$&#xff1b;3、re.S 使. …

在 React 中使用 highlight.js 和 Clipboard.js 实现代码块和复制功能

参考链接&#xff1a;https://blog.csdn.net/huangjuan0229/article/details/130319050 在前端开发中&#xff0c;代码块高亮和复制功能是十分常见的需求。而在 React 中&#xff0c;常用的代码高亮库是 highlight.js&#xff0c;常用的复制库是 Clipboard.js。本篇文章将介绍…

Qt魔法书:打造自定义鼠标键盘脚本

Qt魔法书&#xff1a;打造自定义鼠标键盘脚本 一、引言&#xff08;Introduction&#xff09;1.1 脚本的重要性&#xff08;Importance of Scripts&#xff09;1.2 Qt在脚本制作中的优势&#xff08;Advantages of Qt in Script Making&#xff09;1.3 文章目标与结构概述&…

Java基础(43)File类(文件操作类)详解

在Java中&#xff0c;File 类是 java.io 包中唯一代表磁盘文件本身的对象&#xff0c;也就是说&#xff0c;如果希望在程序中操作文件和目录&#xff0c;则都可以通过 File 类来完成。File 类定义了一些方法来操作文件&#xff0c;如新建、删除、重命名文件和目录等。 File 类…

《永恒之塔sf私服》“龙战前传”里的更高挑战-

关于这个新版本的各种更新内容已经屡见不新&#xff0c;无论是最新关注的玩家&#xff0c;抑或是一直坚守在永恒之塔阵地的老玩家们&#xff0c;相信已经对各种感兴趣的更新倒背如流。这里就不再重复。 每一款MMO游戏升级&#xff0c;伴随着玩家技术和战术的长进&#xff0c;游…

Shell脚本的特殊变量和特殊符号应用

记录&#xff1a;428 场景&#xff1a;Shell脚本中常用特殊符号&#xff0c;&#xff0c;$&#xff0c;${}&#xff0c;$0&#xff0c;$n&#xff0c;$#&#xff0c;$*&#xff0c;$&#xff0c;$?&#xff0c;$$&#xff0c;(( ))&#xff0c;[[ ]]&#xff0c;$[]&#xff…

防火墙NAT策略中各项之间以及策略与策略之间的关系

实验结论 将实验结论写在前面方便大家直接查看 1、NAT策略中rule与rule之间的关系为“或”的关系&#xff0c;即多个rule存在时&#xff0c;流量只需要匹配其中一个rule即可&#xff0c;流量会按照匹配的rule规则进行流量转发。&#xff08;华为华三的防火墙rule是没有ID的&a…

【学习笔记】Rider调试unity【 联调、断点调试等】(决定弃用vscode了)

目录 一 弃用vscode原委二 Rider调试Unity2.1 启动调试2.2 pausepoint 暂停点2.2.1 使用pausepoint2.2.2 pausepoint&#xfeff;与breakpoint的区别 2.3 不同run configuration区别 三 Rider编辑3.1 补充 四 总结 转载请注明出处&#xff1a;&#x1f517;https://blog.csdn.n…