开发者工具与单元测试

  • Devtools简介
  • devtools工作原理
  • 自定义监控资源
  • LiveReload自动刷新页面
  • 禁用自动重启
  • 项目重启中的全局配置
  • SpringBoot单元测试介绍
  • Service测试
  • Controller测试
  • JSON测试


  • Devtools简介

  1. 新建SpringBoot项目,勾选DeveloperTools里面的Spring Boot DevTools依赖
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>  //防止将依赖传递到其它模块去
    </dependency>

     

  2. 自定义监控资源(没多大必要,静态文件本来就不需要编译)
    如果希望静态资源发生变化之后,项目会自动重启,需要在application.properties中加入
    spring.devtools.restrart.exclude=classpath:/static/**  
    或者:
    spring.devtools.restart.additional-paths=src/main/reshources/static

     

  3. LiveReload自动刷新页面
    在Chrome下装一个LiveReload插件,修改完静态资源页面后,在Chrome上面点击一下LiveReload
    页面内容就会自动刷新。
    如果不想让LiveReload自动重启,
    可以在application.properties下加入
    spring.devtools.livereload.enabled=false

     

  4. 禁用自动重启
    如果SpringBoot中加了DevTools依赖,又不想项目自动重启的话,
    可以在application.properties中加入
        spring.devtools.restart.enabled=false
    或者,在SpringBoot启动类中加入
        System.setProperty(" spring.devtools.restart.enabled","false");  
        

     

  5. 项目重启中的全局配置
    在电脑当前用户下新建一个 .spring-boot-devtools.properties 文本文件
    文件内容: spring.devtools.restart.trigger-file=.trigger-file
    在resource目录下创建.trigger-file

     

  6. 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"));//添加断言,判断输入的值和我期望的值是否相等    
    }
    

     

  7. 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());    
    }
    

     

  8. 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("三国演义"));
        }
    }

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值