zoukankan      html  css  js  c++  java
  • 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());
        }
  • 相关阅读:
    Oracle:SQL语句--撤销用户权限
    Oracle:SQL语句--给用户赋权限
    RSTP端口状态迁移过程详解
    LSB算法分析与实现
    工厂方法模式
    Ceasar
    区域性名称和标识符
    Packet Tracer网络模拟实验实记
    H3C-OSPF
    H3C-RIP
  • 原文地址:https://www.cnblogs.com/lyon91/p/9289342.html
Copyright © 2011-2022 走看看