springboot:springboot如何测试打包部署

本文介绍如何在Spring Boot项目中进行单元测试,包括添加依赖、编写测试类及方法,并利用MockMvc测试Controller层。此外,还介绍了如何配置项目支持热部署,以及打包部署的不同方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、开发阶段单元测试1、在pom包中添加spring-boot-starter-test包引用


org.springframework.boot


spring-boot-starter-test


test

2、开发测试类
以最简单的helloworld为例,在测试类的类头部需要添加: @RunWith(SpringRunner.class)和 @SpringBootTest注解,在测试方法的顶端添加 @Test即可,最后在方法上点击右键run就可以运行。
@RunWith(SpringRunner.class)
@SpringBootTest
public class ApplicationTests {
@Test
public void hello() {
System.out.println(“hello world”);
}
}

实际使用中,可以按照项目的正常使用去注入dao层代码或者是service层代码进行测试验证,spring-boot-starter-test提供很多基础用法,更难得的是增加了对Controller层测试的支持
//简单验证结果集是否正确
Assert.assertEquals(3, userMapper.getAll().size());
//验证结果集,提示
Assert.assertTrue(“错误,正确的返回值为200”, status ==
200);
Assert.assertFalse(“错误,正确的返回值为200”, status !=
200);

引入了 MockMvc支持了对Controller层的测试,简单示例如下:
public class HelloControlerTests {
private MockMvc mvc;

//初始化执行
@Before
public void setUp() throws Exception {
    mvc = MockMvcBuilders.standaloneSetup(new HelloController()).build();
}

//验证controller是否正常响应并打印返回结果
@Test
public void getHello() throws Exception {
    mvc.perform(MockMvcRequestBuilders.get("/hello")
                                      .accept(MediaType.APPLICATION_JSON))
       .andExpect(MockMvcResultMatchers.status().isOk())
       .andDo(MockMvcResultHandlers.print()).andReturn();
}

//验证controller是否正常响应并判断返回结果是否正确
@Test
public void testHello() throws Exception {
    mvc.perform(MockMvcRequestBuilders.get("/hello")
                                      .accept(MediaType.APPLICATION_JSON))
       .andExpect(status().isOk())
       .andExpect(content().string(equalTo("Hello World")));
}

}
3、项目支持热部署
pom需要添加以下的配置:



org.springframework.boot


spring-boot-devtools


true







org.springframework.boot


spring-boot-maven-plugin



true




投产上线
其实我觉得这个阶段,应该还是比较简单一般分为两种;一种是打包成jar包直接执行,另一种是打包成war包放到tomcat服务器下。
打成war包
1、maven项目,修改pom包

jar
改为
war

2、打包时排除tomcat.


org.springframework.boot


spring-boot-starter-web




org.springframework.boot


spring-boot-starter-tomcat


provided


在这里将scope属性设置为provided,这样在最终形成的WAR中不会包含这个JAR包,因为Tomcat或Jetty等服务器在运行时将会提供相关的API类。

3、注册启动类
创建ServletInitializer.java,继承SpringBootServletInitializer ,覆盖configure(),把启动类Application注册进去。外部web应用服务器构建Web Application Context的时候,会把启动类添加进去。
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(
SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}

脚本执行
如果使用的是maven,需要包含以下的配置


org.springframework.boot


spring-boot-maven-plugin



true


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值