• 7月11 配置数据库自己挖坑 | 代码覆盖率测试 | MockMvc 测试用例


    一、坑 描述:

    修改配置文件里的数据库连接,结果发现连的还是另外一个库。。

    1、确保启动时用的是这个配置文件,可以修改端口查看是否ok

    2、如果连接到179这个ip 里的数据库,可以全局搜索下。。最后发现DataConfig 里写死了。。。

            config.setJdbcUrl(env.getProperty("spring.datasource.url"));
            config.setUsername(env.getProperty("spring.datasource.username"));
            config.setPassword(env.getProperty("spring.datasource.password"));
            return new HikariDataSource(config);

    之前出了点问题,数据库写死,后面自己忘记了。结果导致花了一个多小时。。。

     有时候你暂时改一个东西,后面自己忘记了。。然后找不到问题出在哪儿。

    首先配置尽量不要这样写硬代码。

    其次出现问题 不要着急,找到问题可能出在哪里。。

    一定是事出有因,否则不会这样。。。连接到了不该连的库,一定是你在哪里配置了

    二、测试覆盖率工具:EclEmma

    https://www.cnblogs.com/Ming8006/p/5811425.html

    EclEmma安装


     返回

    1. 启动eclipse -> 点击Help菜单 -> Install New Software,在弹出的对话框中,点击Add
    2. 输入Name,例如EclEmma。输入Location:http://update.eclemma.org/
    3. 安装后重新启动eclipse,如果成功安装,工具栏上会出现一个新的按钮,如图1所示
    4. 导出HTML报告 

      如何导出:
      1. 要导出的session (session:一次测试覆盖率交互活动)
      2. 选择报告的类型(HTML/XML/Text/EMMA session)
      3. 存放位置
      4.  

    三、MockMvc的使用

    由于是微服务项目 没有APP类,需要在测试上面设置 

    @SpringBootTest(classes={MicroServerApp.class})
    import org.junit.Before;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    import org.springframework.test.web.servlet.MockMvc;
    import org.springframework.http.MediaType;
    import org.springframework.test.web.servlet.setup.MockMvcBuilders;
    import org.springframework.web.context.WebApplicationContext;
    import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
    import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest(classes={MicroServerApp.class})
    public class SystemUserResourceTest {
    
        @Autowired
        private WebApplicationContext wac;
        
        private MockMvc mockMvc;
        
        @Before
        public void setup(){
            mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
        }
        
        @Test
        public void testCreateUserExists() throws Exception {
            String content = "{"userName":"liyang"}";
            String result = mockMvc.perform(MockMvcRequestBuilders.post("/api/systemuser/create")
                    .content(content)
                    .contentType(MediaType.APPLICATION_JSON_UTF8).header("Authorization", "13123213"))
                .andExpect(MockMvcResultMatchers.status().isOk())
                .andReturn().getResponse().getContentAsString();
                System.out.println(result);
        }

    注意对应 post 和 get 。上面是POST

    下面看GET   

    参数设置的方式不同

        @Test
        public void whenQuerySuccess() throws Exception {
            String result = mockMvc.perform(MockMvcRequestBuilders.get("/user")
                        .param("username", "jojo")
                        .param("age", "12")
                        .contentType(MediaType.APPLICATION_JSON_UTF8))
                    .andExpect(MockMvcResultMatchers.status().isOk())
                    .andExpect(MockMvcResultMatchers.jsonPath("$.length()").value(1))
                    .andReturn().getResponse().getContentAsString();;
            System.out.println(result);
        }

    下面是put  和 delete

        @Test
        public void whenUpdateSuccess() throws Exception {
            String content = "{"password":"tom","age":1},"username":jojo}";
            String result = mockMvc.perform(MockMvcRequestBuilders.put("/user/1")
                        .content(content)
                        .contentType(MediaType.APPLICATION_JSON_UTF8))
                    .andExpect(MockMvcResultMatchers.status().isOk())
                    .andExpect(MockMvcResultMatchers.jsonPath("$.age").value("12"))
                    .andReturn().getResponse().getContentAsString();
            System.out.println(result);
        }
        
        @Test
        public void whenDeleteSuccess() throws Exception {
            mockMvc.perform(MockMvcRequestBuilders.delete("/user/1")
                        .contentType(MediaType.APPLICATION_JSON_UTF8))
                    .andExpect(MockMvcResultMatchers.status().isOk());
        }
  • 相关阅读:
    数据库索引的作用和长处缺点
    ping不通的几种可能原因
    UVA
    strtok、strtok_s、strtok_r 字符串切割函数
    CheckBoxPreference组件
    EM算法原理
    Android中ExpandableListView控件基本使用
    拓扑排序的原理及事实上现
    DropdownList绑定的两种方法
    leetcode第一刷_Length of Last Word
  • 原文地址:https://www.cnblogs.com/lyon91/p/9289342.html
Copyright © 2020-2023  润新知