博客详情

springboot(六)--springTest集成、devtool热加载开发者工具 (原创)

作者: 朝如青丝暮成雪
发布时间:2018-08-03 01:24:48  文章分类:springboot   阅读(927)  评论(0)

如题,本篇主要介绍下springboot中测试框架的集成、使用,以及devtool热加载工具的使用。 


一、springboot中集成测试框架

pom.xml 


    <!-- spring-boot test支持  -->
    <dependency>  
            <groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-starter-test</artifactId>  
            <scope>test</scope>  
    </dependency>   
测试代码 



package com.tingcream.springWeb.test;

import java.util.List;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 

import com.tingcream.springWeb.SpringBootApp;
import com.tingcream.springWeb.model.User;
import com.tingcream.springWeb.service.UserService;

 
@RunWith(SpringJUnit4ClassRunner.class)  
@SpringBootTest(classes=SpringBootApp.class, 
    webEnvironment = SpringBootTest.WebEnvironment.MOCK)
   // MOCK 、 RANDOM_PORT  、 DEFINED_PORT  、NONE 
 
public class UserTest {
	@Autowired
	private UserService userService;
	
	@Test
	public void test1(){
		 List<User> list = userService.findUserListByName("张");
		 System.out.println(list.size());
	}
}


可以看到,测试类中webEnvironment 环境有四种常量值

MOCK  : 即mock环境,一个虚拟的servlet容器环境,不会真的内嵌启动servlet容器,事务对数据库的修改将会自动回滚。

RANDOM_PORT: 随机端口环境,会启动真实的内嵌servlet容器,事务对数据库会造成有效的修改。

DEFINED_PORT:指定端口,会启动真实的内嵌servlet容器,事务对数据库会造成有效的修改。

NONE :作用尚不明确

一般地,我们测试时使用MOCK环境或随机端口环境即可。


二、springboot中devtool热加载工具

devtool的工作的大致原理是:devtool能够使用两个类加载器,一个基本类加载器,另一个是restart类加载器。对于开发者经常修改的代码,每次修改都会触发restart类加载器的一次重启,以重新加载新的class,而基本类加载器不会重启。devtool对于开发者而且仿佛是热加载了,其实不是的,devtool靠的是自动restart类加载器的自动重启技术。


devtool 工具 pom.xml配置


 <!-- spring boot  devtools 开发者工具 --> 
   <dependency>  
	    <groupId>org.springframework.boot</groupId>  
	    <artifactId>spring-boot-devtools</artifactId>  
	    <optional>true</optional>
	    <!-- optional 必须修改为true,默认是false -->
	    <!-- optional=true,依赖不会传递,该项目依赖devtools;之后依赖myboot项目的项目如果想要使用devtools,需要重新引入 -->  
   </dependency>  



application.properties 配置

#devtools开发工具热加载(重启)排除静态文件
spring.devtools.restart.exclude=resources/**


想知道更多关于devtool的介绍,请参考springboot官网文档 https://docs.spring.io/spring-boot/docs/1.5.15.RELEASE/reference/htmlsingle/。其实官网中还提到了另一种更为高效的热加载技术:JRebel。它不是像devtool一样靠自动重启,而是直接修改被修改过的源文件的class字节码,通过局部更新class达到热加载的效果,这才是真正名副其实的热加载!!





关键字:  springboot  springTest  devtool
评论信息
暂无评论
发表评论

亲,您还没有登陆,暂不能评论哦! 去 登陆 | 注册

博主信息
   
数据加载中,请稍候...
文章分类
   
数据加载中,请稍候...
阅读排行
 
数据加载中,请稍候...
评论排行
 
数据加载中,请稍候...

Copyright © 叮叮声的奶酪 版权所有
备案号:鄂ICP备17018671号-1

鄂公网安备 42011102000739号