关于java:在SpringBoot项目中编写controller测试用例

相较于测试service与dao层,测试controller局部略微有些繁琐。

测试类的创立

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {Application.class})
public class ControllerTest {
    @Autowired
 private MyController myController;
 private MockMvc mockMvc;
 Logger logger = LoggerFactory.getLogger(ControllerTest.class);
 @Before
 public void init(){
        mockMvc = MockMvcBuilders.standaloneSetup(oilChangeController).build();
 }
    
}

创立测试类的形式与service测试类基本一致,同样须要引入controller对象。不同之处在于须要应用@Before注解在每次测试用例执行前初始化MockMvc实例,@Before的作用是在每次测试用例执行之前会执行标注的办法。

测试传参形式为url传参的办法

@Test
public void getChangeOilList() throws Exception {
    MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
 params.add("pageSize", "10");
 params.add("pageNum", "1");
 params.add("tenantId", "1");
 MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.get("/getinfo").params(params))
            .andDo(MockMvcResultHandlers.print())
            .andReturn();
 logger.info(mvcResult.getResponse().getContentAsString());
}

这种办法多为get申请,须要实例化MultiValueMap的实例来寄存参数,或者间接拼接在url中。

测试json模式传参的办法

@Test
public void changeTankOil() throws Exception {
    ChangeSetRequest request = new ChangeSetRequest();
 request.setOiltankNo("123");
 request.setTenantId("1");
 request.setOrgCode("4400010029");
 request.setShiftNo("111");
 request.setOilCode("093");
 request.setOperatorId("dfd");
 MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/change")
            .contentType(MediaType.APPLICATION_JSON)
            .content(JSONUtil.toJson(request)))
            .andDo(MockMvcResultHandlers.print())
            .andReturn();
 logger.info(mvcResult.getResponse().getContentAsString());
}

这种办法通常属于get或者post申请,须要指定参数类型为json格局,示例中的JSONUtil为将对象json化的工具,非框架提供。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理