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