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());
    }
原文地址:https://www.cnblogs.com/lyon91/p/9289342.html