- Devtools简介
- devtools工作原理
- 自定义监控资源
- LiveReload自动刷新页面
- 禁用自动重启
- 项目重启中的全局配置
- SpringBoot单元测试介绍
- Service测试
- Controller测试
- JSON测试
- Devtools简介
- 新建SpringBoot项目,勾选DeveloperTools里面的Spring Boot DevTools依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> //防止将依赖传递到其它模块去 </dependency>
- 自定义监控资源(没多大必要,静态文件本来就不需要编译)
如果希望静态资源发生变化之后,项目会自动重启,需要在application.properties中加入 spring.devtools.restrart.exclude=classpath:/static/** 或者: spring.devtools.restart.additional-paths=src/main/reshources/static
- LiveReload自动刷新页面
在Chrome下装一个LiveReload插件,修改完静态资源页面后,在Chrome上面点击一下LiveReload 页面内容就会自动刷新。 如果不想让LiveReload自动重启, 可以在application.properties下加入 spring.devtools.livereload.enabled=false
- 禁用自动重启
如果SpringBoot中加了DevTools依赖,又不想项目自动重启的话, 可以在application.properties中加入 spring.devtools.restart.enabled=false 或者,在SpringBoot启动类中加入 System.setProperty(" spring.devtools.restart.enabled","false");
- 项目重启中的全局配置
在电脑当前用户下新建一个 .spring-boot-devtools.properties 文本文件 文件内容: spring.devtools.restart.trigger-file=.trigger-file 在resource目录下创建.trigger-file
- SpringBoot单元测试介绍-----service测试
@RunWith(SpringRunner.class) //SpringJUnit4ClassRunner @SpringBootTest 创建一个HelloService @Service public class HelloService{ public String sayHello(String name) { return "hello" +name; } } 在测试类中测试 @Autowired HelloService helloService; //注入HelloService @Test public void test1(){ String hello = helloService.sayHello("zenghao"); Assert.assertThat(hello,Matchers.is("zhangsan"));//添加断言,判断输入的值和我期望的值是否相等 }
- SpringBoot单元测试介绍-----Controller测试
创建一个HelloController @RestController public class HelloController { @GetMapping("/hello") public String hello (String name){ return "hello" +name; } } 创建一个Book实体,get,set() @PostMapping("/book") public Book addBook(@RequestBody Book book){ return book; } 测试 @Autowired //需要注入这两个 WebApplicationContext wac; MockMvc mockMvc; @Before public void before(){ mockMvc=mockMvcBuilders.webApplicationContextSetuo(wac).build(); } @Test public void test2()throws Exception{ MvcResult mvcResult = mocjMvc.perform( MockMvcRequestBuilders.get("/hello") .contentType(MediaType.APPLICATION_FORM_URLBNCODED) .param("name","zenghao") .andExpect(MockMvcResultMatchers.status().isOk()) .andDi(MockMvcResultHandlers.orint()) .andReturn(); System.out.println(mvcResult.getResponse().getContentAsString()); ) } @test public void test3(){ Book book = new Book(); book.setId(100); book.setName("三国演义"); book.setAuthor("罗贯中"); String s = new ObjectMapper().writeValueAsString(book); MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/book")) .contentType(MediaType.APPLTCATION_JSON).content(s)) .andExpect(MockMvcResultMatchers.status().isOk()) .andReturn(); Ststem.out.println(mvcResult.getResponse().getContentAsString()); }
- SpringBoot单元测试介绍-----JSON测试
JSon的序列化和反序列化 创建一个book.json {"id":1,"name":"三国演义","author":"罗贯中"} public class JsonTest{ @Autowired JacksonTester jacksonTester; @Test public void test4(){ //序列化 Book book = new Book(); book.setId(100); book.setName("三国演义"); book.setAuthor("罗贯中"); Assertions.asserThat(jacksonTester.write(book)).isEqualToJson("book.jspn"); Assertions.asserThat(jacksonTester.write(book)).haJsonPathStringValue("@.name"); Assertions.asserThat(jacksonTester.write(book)).extractingJsonPathStringValue("@.name").isEqualTo("三国演义"); } @Test public void test5() throws IOException{ //反序列化 String content = "{"id":1,"name":"三国演义","author":"罗贯中"}"; Assertions.asserThat(jacksonTester.parseObject(content).getName().isEqualTo("三国演义")); } }