一、坑 描述:
修改配置文件里的数据库连接,结果发现连的还是另外一个库。。
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安装
- 启动eclipse -> 点击Help菜单 -> Install New Software,在弹出的对话框中,点击Add
- 输入Name,例如EclEmma。输入Location:http://update.eclemma.org/
- 安装后重新启动eclipse,如果成功安装,工具栏上会出现一个新的按钮,如图1所示
-
导出HTML报告
如何导出:- 要导出的session (session:一次测试覆盖率交互活动)
- 选择报告的类型(HTML/XML/Text/EMMA session)
- 存放位置
三、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()); }