SpringBoot第三集:热部署与单元测试(2020最新最易懂)
SpringBoot第三集:热部署与单元测试(2020最新最易懂)
有兴趣的可以先参考附录简单了解SpringBoot自动装配流程。
一.SpringBoot开发热部署
项目开发中,你是否也遇到更新配置文件信息后,必须重启项目的,否则数据不更新的问题?
Spring Boot提供了一个名为spring-boot-devtools的模块来使应用支持热部署,提高开发效率,修改后无需手动重启Spring Boot应用。使用也非常简单,在pom.xmI中加入devtools的依赖就可以了。当然,首次引入后,项目应用需要重启。否则不生效。
1 <!-- SpringBoot热部署依赖 -->
2 <dependency>
3 <groupId>org.springframework.boot</groupId>
4 <artifactId>spring-boot-devtools</artifactId>
5 </dependency>
二.SprongBoot单元测试
对于java开发者而言,Junit应该无人不知了。所以SpringBoot也是基于Junit进行单位测试的。测试代码位置:建议在:src/test/java目录下
SpringBoot测试开发,只需要在pom中引入测试依赖即可使用,默认SpringBoot会排除低版本的Junit测试包。(SpringBoot推荐使用Junit5.x或更高版本)
JUnit中的注解测试常用注解:
@BeforeClass:针对所有测试,在每个类加载的开始和结束时运行,必须为静态方法:static void
@Before:初始化方法,执行当前测试类的每个测试方法前执行。
@Test:测试方法,在这里可以测试期望异常和超时时间
@After:释放资源,执行当前测试类的每个测试方法后执行
@AfterClass:针对所有测试,在每个类加载的开始和结束时运行,必须为静态方法:static void
@Ignore:忽略的测试方法(只在测试类的时候生效,单独执行该测试方法无效)基本不用
@RunWith:可以更改测试运行器 ,用来告诉JUnit不要使用内置的org.junit.runner.Runner进行单元测试,而应该使用指定的类做单元测试,对于Spring单元测试总是要使用 SpringRunner.class 。(一般不用)
一个单元测试类执行顺序为:
@BeforeClass –> @Before –> @Test –> @After –> @AfterClass
每一个测试方法的调用顺序为:
@Before –> @Test –> @After
1.测试案例
- 新建SpringBoot项目,默认会导入测试依赖,如果没有请手动修改pom文件导入。
1 <!-- SpringBoot测试依赖 -->
2 <dependency>
3 <groupId>org.springframework.boot</groupId>
4 <artifactId>spring-boot-starter-test</artifactId>
5 <scope>test</scope>
6 <!-- 排除junit.vintage -->
7 <exclusions>
8 <exclusion>
9 <groupId>org.junit.vintage</groupId>
10 <artifactId>junit-vintage-engine</artifactId>
11 </exclusion>
12 </exclusions>
13 </dependency> - 在src/test/java目录下新建测试类。
@SpringBootTest注解是SpringBoot自1.4.0版本开始引入的一个用于测试的注解。
1 @SpringBootTest
2 class SpringBootApplicationTests {
3
4 @Autowired
5 IDCard idcard;
6
7 @Test
8 void contextLoads() {
9 System.out.println("测试:"+idcard);
10 }
11
12 } - 选中测试方法名,右键执行Junit Test即可。
其他的测试注解:略。自行演示!
附录
SpringBoot自动装配原理分析
查看@SpringBootApplication注解源码。



Mavne找到Spring-Boot-autoconfigrue依赖,进入包META-INF打开文件:spring.factories

在上图中,配置源会判断是否启用自动装配,也只会加载已启用的配置,只要我们在pom文件中引入的组件,SpringBoot都会帮我们自动配置。
可以通过在核心配置文件中添加如下代码,实现控制台显示配置详情:
debug: true
SpringBoot第三集:热部署与单元测试(2020最新最易懂)的更多相关文章
- SpringBoot开发 - 什么是热部署和热加载?devtool的原理是什么?
在SpringBoot开发调试中,如果我每行代码的修改都需要重启启动再调试,可能比较费时间:SpringBoot团队针对此问题提供了spring-boot-devtools(简称devtools)插件 ...
- SpringBoot第二集:注解与配置(2020最新最易懂)
2020最新SpringBoot第二集:基础注解/基础配置(2020最新最易懂) 一.Eclipse安装SpringBoot插件 Eclipse实现SpringBoot开发,为便于项目的快速构建,需要 ...
- SpringBoot第四集:整合JdbcTemplate和JPA(2020最新最易懂)
SpringBoot第四集:整合JdbcTemplate和JPA(2020最新最易懂) 当前环境说明: Windows10_64 Maven3.x JDK1.8 MySQL5.6 SpringTool ...
- SpringBoot第五集:整合Druid和MyBatis(2020最新最易懂)
SpringBoot第五集:整合Druid和MyBatis(2020最新最易懂) 1.SpringBoot整合Druid Druid是阿里巴巴的一个开源项目,是一个数据库连接池的实现,结合了C3P0. ...
- SpringBoot第十集:i18n与Webjars的应用(2020最新最易懂)
SpringBoot第十集:i18n与Webjars的应用(2020最新最易懂) 一,页面国际化 i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符 ...
- SpringBoot第一集:入门(2020最新最易懂)
2020最新SpringBoot第一集:入门(2020最新最易懂) 学习思路: 是什么?为什么要学,有什么用?有什么特点?简单明了的总结一句话! SpringBoot推荐开发工具: Spring To ...
- SpringBoot第四集:静态资源与首页定(2020最新最易懂)
SpringBoot第四集:静态资源与首页定(2020最新最易懂) 问题 SpringBoot构建的项目结构如下:没有webapp目录,没有WEB-INF等目录,那么如果开发web项目,项目资源放在那 ...
- SpringBoot第五集:整合监听器/过滤器和拦截器(2020最新最易懂)
SpringBoot第五集:整合监听器/过滤器和拦截器(2020最新最易懂) 在实际开发过程中,经常会碰见一些比如系统启动初始化信息.统计在线人数.在线用户数.过滤敏/高词汇.访问权限控制(URL级别 ...
- SpringBoot第九集:整合JSP和模板引擎Freemarker/Thymeleaf(2020最新最易懂)
SpringBoot第九集:整合JSP和模板引擎(2020最新最易懂) 当客户通过前端页面提交请求后,我们以前是怎么做的?后端接收请求数据,处理请求,把响应结果交给模板引擎JSP,最后将渲染后的JSP ...
随机推荐
- 关于数学公式Markdown
打开写博客(这都打不开就...) 再打开"选项". 选"启用数学公式支持"对(以后有用嘻嘻) 在默认编辑器里有Markdown选对. 然后就可以 \[\sum\ ...
- python的快捷键
常用快捷键 1.Ctrl + Enter:在下方新建行但不移动光标 2.Shift + Enter:在下方新建行并移到新行行首 3.Ctrl + /:注释(取消注释)选择的行 4.Ctrl + Alt ...
- 注解&反射
什么是注解 Annotation是从JDK5.0开始引入的新技术 Annotation的作用: 不是程序本身,可以对程序作出解释.(这一点和注释(comment)没什么区别) > 可以被其他程序 ...
- 烦人的Null,你可以走开点了
1. Null 的问题 假设现在有一个需要三个参数的方法.其中第一个参数是必须的,后两个参数是可有可无的. 第一种情况,在我们调用这个方法的时候,我们只能传入两个参数,对第三个参数,我们在上下文里是没 ...
- Python-嵌套列表变成普通列表
如何把[1, 5, 6, [2, 7, [3, [4, 5, 6]]]]变成[1, 5, 6, 2, 7, 3, 4, 5, 6]? 思考: -- for循环每次都遍历列表一层 -- 把取出的单个值加 ...
- centos7中nfs共享的配置方法
NFS是Network File System的缩写,即网络文件系统.客户端通过挂载的方式将NFS服务器端共享的数据目录挂载到本地目录下. 一.nfs为什么需要RPC? 因为NFS支持的功能很多,不同 ...
- ThinkPHP 5 生命周期
前段时间用TP5开发了一个小程序,就熟悉了一下TP5.TP5是TP框架最新的一个版本,与以前的3还是有很大的区别,有人说和laravel比较靠近,其实也还好,每个人都有自己不同的看法,只要是选择一个自 ...
- 00 what is C Programming?C编程是什么?
C语言简介 C is a programming language that lets us give a computer very specifio commands. C语言是一种编程语言,它让 ...
- golang常用库:配置文件解析库-viper使用
一.viper简介 viper 配置解析库,是由大神 Steve Francia 开发,他在google领导着 golang 的产品开发,他也是 gohugo.io 的创始人之一,命令行解析库 cob ...
- ansible-主机清单的配置
1. ansible主机清单的配置 以下是ansible安装完成后的源文件 1 [root@test-1 ~]# cat /etc/ansible/hosts 2 # This is the defa ...