Spring Boot实现测试及打包部署
Spring Boot里面最常用的是单元测试了,Junit单元测试。Spring Boot也提供对单元测试的集成,除此之外,还提供了MockMVC对接口进行测试。
一、单元测试
首先单元测试需要引入Spring Boot Test坐标,如下:
org.springframework.boot spring-boot-starter-test test
然后,新建PackageApplicationTests.java类,加上Spring Boot单元测试标识:
@RunWith(SpringRunner.class)@SpringBootTest
表示是一个Spring Boot单元测试,并在测试方法上加入@Test声明测试方法,完整代码如图:
将鼠标移至contexrLoads方法代码块内,右键Junit执行结果:
运行了Junit测试执行结果。
二、MockMvc
下面写一下MockMvc的测试方法:
首先,新建一个Controller,代码如下:
引入MockMvc提供对接口测试的支持,新建HelloTests.java,加上Spring Boot测试标志:
引入MockMvc工具:
编写单元测试类初始化方法,引入HelloController接口:
新建getHello()单元测试方法,并设置请求接口/hello,代码如下:
mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(content().string(equalTo("Hello World")));
MockMvc会调用接口,并测试接口是否成功,接口返回值是否正确,完整代码如下:
进入getHello方法体,右键Junit,查看结果:
结果返回正确。
接下来改进测试方法,增加验证controller是否正常响应并打印返回结果,添加andDo(MockMvcResultHandlers.print())输出打印结果。
MockMvc代码如下:
mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON)) .andExpect(MockMvcResultMatchers.status().isOk()) .andDo(MockMvcResultHandlers.print()) .andReturn();
完整测试方法代码如下:
重新Junit测试,打印结果:
MockHttpServletRequest:
HTTP Method = GET
Request URI = /hello
Parameters = {}
Headers = {Accept=[application/json]}
Body =
Session Attrs = {}
Handler:
Type = com.ocai.core.test.controller.HelloController
Method = public java.lang.String com.ocai.core.test.controller.HelloController.index()
Async:
Async started = false
Async result = null
Resolved Exception:
Type = null
ModelAndView:
View name = null
View = null
Model = null
FlashMap:
Attributes = null
MockHttpServletResponse:
Status = 200
Error message = null
Headers = {Content-Type=[application/json;charset=ISO-8859-1], Content-Length=[11]}
Content type = application/json;charset=ISO-8859-1
Body = Hello World
Forwarded URL = null
Redirected URL = null
Cookies = []
如图:
表示请求成功。
三、打包命令
进入命令行界面(CMD)也可以,cd 到项目根目录(和pom.xml同级),如图:
执行命令:mvn clean package(会执行Junit测试代码)
选择:mvn clean package -Dmaven.test.skip=TRUE (忽略Junit Test)
如图:
运行结果:
在target目录下会生成ocai-core-package-2.0-SNAPSHOT.jar文件:
命名一般是 项目名+版本号.jar
CMD进入target目录,运行jar文件:java -jar ocai-core-package-2.0-SNAPSHOT.jar
如图:
执行,运行结果如图:
启动成功,8483端口。
四、启动读取不同配置文件
准备好几个application配置文件,加上环境后缀名,如图:
application-dev.yml资源文件示例如下:
如果要选择dev环境资源文件,则启动命令为:
java -jar ocai-core-package-2.0-SNAPSHOT.jar --spring.profiles.active=dev则会执行application-dev.yml资源文件的配置。资源文件用于多个不同的环境进行切换,不同的机器,生产环境、开发环境、测试环境进行切换。
Spring Boot还可以采用打成war包方式,后面笔者会分享。