controller单元测试
来源:互联网 发布:51单片机简易电子琴 编辑:程序博客网 时间:2024/06/15 10:30
import org.junit.runner.RunWith;
import org.mockito.Matchers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.MediaType;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
import java.util.ArrayList;
import java.util.List;
import static org.mockito.BDDMockito.given;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
/**
* Created by ji_pengyun on 17-7-11.
*/
@RunWith(SpringJUnit4ClassRunner.class)
@WebMvcTest(MaintCompletionEvaluationController.class)
//新创建一个启动类。去掉mybatis的mapperScan注解。
public class MaintCompleteEvaluationControllerTest {
private MaintCompletionEvaluationService maintCompleteEvaluationService;
@MockBean
private MaintPointResponseService maintPointResponseService;
@MockBean
private TaskService taskService;
@MockBean
private SubTaskService subTaskService;
@MockBean
private MaintCompleteService maintCompleteService;
@MockBean
private BusinessDataCompleteService businessDataCompleteService;
@Autowired
private MockMvc mvc;
//get 请求
@Test
public void testGetMaintCompletionEvaluationSum() throws Exception {
//创建测试数据
MaintCompletionEvaluation maintCompletionEvaluation = new MaintCompletionEvaluation();
List<MaintPointResponse> maintPointResponses = new ArrayList<>();
MaintPointResponse maintPointResponse = new MaintPointResponse();
maintPointResponses.add(maintPointResponse);
maintCompletionEvaluation.setIndicatorsJson("
{\"provinceId\": 200,\"subTaskId\":172,\"saveType\":2,\"gsmOgicBaseStationYearAvg\": 10,\"status\":2}");
maintCompletionEvaluation.setContactsJson("{\"gsmOgicBaseStationYearAvgNote\": 6}");maintCompletionEvaluation.setSubTaskId(172);
maintCompletionEvaluation.setProvinceId(200);
maintCompletionEvaluation.setContactsJson("
{\"gsmOgicBaseStationYearAvgEVAL_END\": 6,\"gsmOgicBaseStationYearAvgCONTACT_END\": 6,\"gsmOgicBaseStationYearAvgPHONE_END\": 6}");
maintCompletionEvaluation.setIndicatorsJson("{\"provinceId\": 200,\"subTaskId\":172,\"saveType\":2,\"gsmOgicBaseStationYearAvg\": 10,\"status\":2}");List<MaintCompletionEvaluation> maintCompletionEvaluations = new ArrayList<>();
maintCompletionEvaluations.add(maintCompletionEvaluation);
Long deadLine = System.currentTimeMillis() + 100000;
Integer status = 1;
SubTask subTask = new SubTask();
subTask.setId(1);
subTask.setSummarySourceJson("
{\"maintCompleteCurrentYear\": 2017,\"maintCompleteCurrentStageNumber\":2,\"businessDataCompleteCurrentYear\":2017,\"businessDataCompleteCurrentStageNumber\":2,\"maintCompleteLastYear\":2016,\"maintCompleteLastStageNumber\": 2,\"businessDataCompleteLastYear\":2016,\"businessDataCompleteLastStageNumber\": 2,\"benchMarkingsId\": 12}");
Integer result = 1;String summarySourceJson = "
{\"maintCompleteCurrentYear\": 2017,\"maintCompleteCurrentStageNumber\":2,\"businessDataCompleteCurrentYear\":2017,\"businessDataCompleteCurrentStageNumber\":2,\"maintCompleteLastYear\":2016,\"maintCompleteLastStageNumber\": 2,\"businessDataCompleteLastYear\":2016,\"businessDataCompleteLastStageNumber\": 2,\"benchMarkingsId\": 12}";
String instruction = "instruction";String templateId = "templateId";
//service
given(this.taskService.getDeadLineBySubTaskId(Matchers.any(Integer.class)))
.willReturn(deadLine);
given(this.taskService.getTaskStatusBySubTaskId(Matchers.any(Integer.class), Matchers.any(Integer.class), Matchers.any(Integer.class)))
.willReturn(status);
given(this.taskService.getSubTaskBySubTaskIdAndType(Matchers.any(Integer.class), Matchers.any(Integer.class)))
.willReturn(subTask);
given(this.maintCompleteEvaluationService.addOrUpdateMaintCompletionEvaluationSammary(Matchers.any(MaintCompletionEvaluation.class)))
.willReturn(result);
given(this.maintCompleteEvaluationService.getMaintCompletionEvaluationSum(Matchers.any(Integer.class), Matchers.any(Integer.class)))
.willReturn(maintCompletionEvaluations);
given(this.subTaskService.getBenchMarkingIdBySubTaskId(Matchers.any(Integer.class)))
.willReturn(summarySourceJson);
given(this.taskService.getInstructionBySubTaskId(Matchers.any(Integer.class)))
.willReturn(instruction);
given(this.taskService.getTemplateIdBySubTaskId(Matchers.any(Integer.class)))
.willReturn(templateId);
given(this.maintPointResponseService.getMaintPointResponseSummaries(Matchers.any(Integer.class), Matchers.any(Integer.class)))
.willReturn(maintPointResponses);
//构建请求
final ResultActions perform = this.mvc.perform(get("/maint_completion_evaluation?subTaskId=172&provinceId=200").header("User-Name", "aa"));
perform.andExpect(handler().handlerType(MaintCompletionEvaluationController.class));
perform.andExpect(status().isOk());
perform.andExpect(content().contentType("application/json;charset=UTF-8"));
perform.andExpect(jsonPath("$.meta").exists());
perform.andExpect(jsonPath("$.data.details[0].provinceId").value(200));
perform.andExpect(jsonPath("$.data.details[0].subTaskId").value(172));
//另一个请求为了if else,完成覆盖
final ResultActions perform1 = this.mvc.perform(get("/maint_completion_evaluation?subTaskId=172&provinceId=0").header("User-Name", "ji"));
perform1.andExpect(handler().handlerType(MaintCompletionEvaluationController.class));
perform1.andExpect(status().isOk());
perform1.andExpect(content().contentType("application/json;charset=UTF-8"));
perform1.andExpect(jsonPath("$.meta").exists());
perform1.andExpect(jsonPath("$.data.details[0].provinceId").value(200));
perform1.andExpect(jsonPath("$.data.details[0].subTaskId").value(172));
}
//post请求
@Test
public void testAddBusinessDataComplete() throws Exception {
BusinessDataComplete businessDataComplete = new BusinessDataComplete();
businessDataComplete.setCreateTime(121321123L);
businessDataComplete.setProvinceId(200);
Integer result = 0;
Long deadLine = System.currentTimeMillis() + 100000;
given(this.maintCompleteEvaluationService.addOrUpdateMaintCompletionEvaluation(Matchers.any(MaintCompletionEvaluation.class)))
.willReturn(result);
given(this.taskService.getDeadLineBySubTaskId(Matchers.any(Integer.class)))
.willReturn(deadLine);
final ResultActions perform = this.mvc.perform(post("/maint_completion_evaluation")
.contentType(MediaType.APPLICATION_JSON)
.header("User-Name", "ji")
.content("
{\"provinceId\": 551,\"subTaskId\": 20,\"saveType\":2,\"wireTotalOptiPerContact\": \"jj\",\"wireTotalOptiPerPhone\": \"18712121212\",\"wireTotalMaintEval\":\"花花\",\"wireTotalMaintContact\": \"hh\",\"wireTotalMaintPhone\": \"18731112222\",\"wireGsmEval\": \"gssf\"}"));
final ResultActions perform1 = this.mvc.perform(post("/maint_completion_evaluation")
.contentType(MediaType.APPLICATION_JSON)
.header("User-Name", "ji")
.content("{\"provinceId\": 551,\"subTaskId\": 20,\"saveType\":2,\"wireTotalMaintContact\": \"hh\"}"));
final ResultActions perform2 = this.mvc.perform(post("/maint_completion_evaluation")
.contentType(MediaType.APPLICATION_JSON)
.header("User-Name", "ji")
.content("{\"provinceId\": 551,\"subTaskId\": 20,\"saveType\":2,\"wireTotalOptiPerPhone\": \"18712121212\"}"));
}
}
- controller单元测试
- Grails中的Controller单元测试
- Spring MVC Controller 单元测试
- springmvc controller 单元测试
- Spring-Controller单元测试
- 对Controller的单元测试
- Spring-Controller单元测试
- Spring Mvc controller单元测试
- mock controller 单元测试
- Junit4 + MockMvc 进行单元测试,springboot controller单元测试
- Mockmvc单元测试controller层代码
- Spring入门21 - Controller的单元测试
- Controller 使用RestTemplate进行单元测试 spring mvc
- 在springMVC中的controller写单元测试
- Junit对Spring Controller进行单元测试
- 【JUnit实战】为应用程序Controller设计单元测试
- spring MVC mock类单元测试(controller)
- 单元测试SpringMVC带文件上传的controller
- org.springframework.beans.factory.parsing.BeanDefinitionParsingException&更换jdk
- C++命名空间/string类型/vector类型
- safari中遇到的坑
- 正则匹配:match与exec
- 2017-03-21 Flex布局新旧混合写法详解(兼容微信) http://www.tuicool.com/articles/Yzeu6j7
- controller单元测试
- Struts2框架学习(二) Action
- 有关CoordinatorLayout的总结
- js弹出层评论前判断是否要登录
- pod install 慢
- Spring 使用注解方式进行事务管理
- Shell的使用
- ios集成Charts框架并绘制柱形图详解
- Python处理缺失值