天天看點

springboot test測試類_Spring Boot實作測試及打包部署Spring Boot實作測試及打包部署

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声明测试方法,完整代码如图:

springboot test測試類_Spring Boot實作測試及打包部署Spring Boot實作測試及打包部署

将鼠标移至contexrLoads方法代码块内,右键Junit执行结果:

springboot test測試類_Spring Boot實作測試及打包部署Spring Boot實作測試及打包部署

运行了Junit测试执行结果。

二、MockMvc

下面写一下MockMvc的测试方法:

首先,新建一个Controller,代码如下:

springboot test測試類_Spring Boot實作測試及打包部署Spring Boot實作測試及打包部署

引入MockMvc提供对接口测试的支持,新建HelloTests.java,加上Spring Boot测试标志:

springboot test測試類_Spring Boot實作測試及打包部署Spring Boot實作測試及打包部署

引入MockMvc工具:

springboot test測試類_Spring Boot實作測試及打包部署Spring Boot實作測試及打包部署

编写单元测试类初始化方法,引入HelloController接口:

springboot test測試類_Spring Boot實作測試及打包部署Spring Boot實作測試及打包部署

新建getHello()单元测试方法,并设置请求接口/hello,代码如下:

mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(content().string(equalTo("Hello World")));
           

MockMvc会调用接口,并测试接口是否成功,接口返回值是否正确,完整代码如下:

springboot test測試類_Spring Boot實作測試及打包部署Spring Boot實作測試及打包部署

进入getHello方法体,右键Junit,查看结果:

springboot test測試類_Spring Boot實作測試及打包部署Spring Boot實作測試及打包部署

结果返回正确。

接下来改进测试方法,增加验证controller是否正常响应并打印返回结果,添加andDo(MockMvcResultHandlers.print())输出打印结果。

MockMvc代码如下:

mvc.perform(MockMvcRequestBuilders.get("/hello").accept(MediaType.APPLICATION_JSON)) .andExpect(MockMvcResultMatchers.status().isOk()) .andDo(MockMvcResultHandlers.print()) .andReturn();
           

完整测试方法代码如下:

springboot test測試類_Spring Boot實作測試及打包部署Spring Boot實作測試及打包部署

重新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 = []

如图:

springboot test測試類_Spring Boot實作測試及打包部署Spring Boot實作測試及打包部署

表示请求成功。

三、打包命令

进入命令行界面(CMD)也可以,cd 到项目根目录(和pom.xml同级),如图:

springboot test測試類_Spring Boot實作測試及打包部署Spring Boot實作測試及打包部署

执行命令:mvn clean package(会执行Junit测试代码)

选择:mvn clean package -Dmaven.test.skip=TRUE (忽略Junit Test)

如图:

springboot test測試類_Spring Boot實作測試及打包部署Spring Boot實作測試及打包部署

运行结果:

springboot test測試類_Spring Boot實作測試及打包部署Spring Boot實作測試及打包部署

在target目录下会生成ocai-core-package-2.0-SNAPSHOT.jar文件:

springboot test測試類_Spring Boot實作測試及打包部署Spring Boot實作測試及打包部署

命名一般是 项目名+版本号.jar

CMD进入target目录,运行jar文件:java -jar ocai-core-package-2.0-SNAPSHOT.jar

如图:

springboot test測試類_Spring Boot實作測試及打包部署Spring Boot實作測試及打包部署

执行,运行结果如图:

springboot test測試類_Spring Boot實作測試及打包部署Spring Boot實作測試及打包部署

启动成功,8483端口。

四、启动读取不同配置文件

准备好几个application配置文件,加上环境后缀名,如图:

springboot test測試類_Spring Boot實作測試及打包部署Spring Boot實作測試及打包部署

application-dev.yml资源文件示例如下:

springboot test測試類_Spring Boot實作測試及打包部署Spring Boot實作測試及打包部署

如果要选择dev环境资源文件,则启动命令为:

java -jar ocai-core-package-2.0-SNAPSHOT.jar --spring.profiles.active=dev则会执行application-dev.yml资源文件的配置。资源文件用于多个不同的环境进行切换,不同的机器,生产环境、开发环境、测试环境进行切换。
           

Spring Boot还可以采用打成war包方式,后面笔者会分享。

繼續閱讀