https://meilishiyan-song.taobao.com/

test中测试 模拟浏览器 Spring MVC测试框架详解——服务端测试

1get请求 参数跟在url后面的(常见为列表中每一行查询详情的时候,参数跟在a标签的路径后面的应用场景)

get无参查询:

@Test

       public void testSelectAuditStatus() throws Exception{

              //purchaseItListController.selectAuditStatus();

      

              String url = "/purchaseItList/selectAuditStatus";

        MvcResult result = (MvcResult) mockMvc.perform(get(url)

              .contentType(MediaType.APPLICATION_JSON)

              .param("epsToken", "token")

              .accept(MediaType.APPLICATION_JSON))

              .andExpect(status().isOk())

              .andDo(MockMvcResultHandlers.print()).andReturn();

         Assert.assertEquals(200, result.getResponse().getStatus());

         Assert.assertNotNull(result.getResponse().getContentAsString());

       }

 

@Controller

@RequestMapping("/purchaseItList")

public class PurchaseItListController implements Serializable{

       private static final long serialVersionUID = 2732216546553695880L;

       private static final Logger log = LoggerFactory.getLogger(ItEquipmentRepairCostMaintenanceController.class);

 

       @Resource

       private PurchaseItListService purchaseItListService;

       /**

        * query auditStatus list

        * 查询审核状态

        * @param id

        * @return

        */

       @RequestMapping(value = "/selectAuditStatus", method = RequestMethod.GET)

       @ResponseBody

       public ResultModel selectAuditStatus() {

              log.info(this.getClass().getName()+".selectAuditStatus.start");

              ResultModel resultModel = new ResultModel();

              Map<String,String> statusMap=purchaseItListService.selectAuditStatus();

              resultModel.setResultCode(Constants.SERVICE_SUCCESS_CODE);

              resultModel.setResultMsg(Constants.DATA_BASE_SEARCH_SUCCESS_MSG);

              resultModel.setResultData(statusMap);

              log.info(this.getClass().getName()+".selectAuditStatus.end.resultModel="+resultModel);

              System.out.print("==========resultModel="+resultModel);;

              return resultModel;

       }

 

get有参数测试:

* 根据id查询详情

        * @throws Exception

        */

       //@Test

       public void selectByPrimaryKey() throws Exception {

              String url = "/storeLocalPm/selectByPrimaryKey/{id}";

              MvcResult result = (MvcResult) mockMvc.perform(

                                   //id:key  1value 对应controller中的key值。

                                get(url,1)

                               

                     .contentType(MediaType.APPLICATION_JSON)

                     .param("epsToken", "token")

                     .accept(MediaType.APPLICATION_JSON))

                     .andExpect(status().isOk())

                     .andDo(MockMvcResultHandlers.print())

                           .andReturn();

              Assert.assertEquals(200, result.getResponse().getStatus());

        Assert.assertNotNull(result.getResponse().getContentAsString());

             

       }

 

 

/**

        * query detail by id

        * 根据id查询详情

        * @param id

        * @return

        */

       @RequestMapping(value = "/selectByPrimaryKey/{id}",

                            method = RequestMethod.GET,

                            consumes = MediaType.APPLICATION_JSON_VALUE)

       @ResponseBody

       public ResultModel selectByPrimaryKey(@PathVariable("id") Long id) {

              log.info(this.getClass().getName()+".selectByPrimaryKey.start.id="+id);

              ResultModel resultModel = new ResultModel();

              StoreLocalPm storeLocalPm=new StoreLocalPm();

              try{

                  storeLocalPm=storeLocalPmService.selectByPrimaryKey(id);

                  log.info(this.getClass().getName()+".selectByPrimaryKey.success.storeLocalPm="+storeLocalPm);

                  resultModel.setResultCode(Constants.SERVICE_SUCCESS_CODE);

                     resultModel.setResultMsg(Constants.DATA_BASE_SEARCH_SUCCESS_MSG);

                     resultModel.setResultData(storeLocalPm);

              }catch(Exception e){

                     resultModel.setResultCode(Constants.SERVICE_ERROR_CODE);

                     resultModel.setResultMsg(Constants.DATA_BASE_SEARCH_ERROR_MSG);

              }     

              log.info(this.getClass().getName()+".selectByPrimaryKey.end.resultModel="+resultModel);

              return resultModel;

       }

2 post提交,一般用于非a标签的,也就是参数并不是跟在url后面的。而是在js中组织参数,一般是组织为一个对象,传过来的

post无参测试:

/**

        * 准备编辑数据到新增页面

        * @throws Exception

        */

       //@Test

       public void selectStoreLocalListForCreate() throws Exception {

//            ResultModel resultModel=storeLocalPmController.selectStoreLocalListForCreate();

//            System.out.println("selectStoreLocalListForCreate--------resultModel="+resultModel);

              MvcResult result = (MvcResult) mockMvc.perform(                                  

                                post("/storeLocalPm/selectStoreLocalListForCreate")

                     .contentType(MediaType.APPLICATION_JSON)

                     .param("epsToken", "token")

                     .accept(MediaType.APPLICATION_JSON))

                     .andExpect(status().isOk())

                     .andDo(MockMvcResultHandlers.print())

                           .andReturn();

              Assert.assertEquals(200, result.getResponse().getStatus());

        Assert.assertNotNull(result.getResponse().getContentAsString());

             

       }

 

/**

        * prepare info for creatPage

        * 准备编辑数据到新增页面

        * @param id

        * @return

        */

       @RequestMapping(value = "/selectStoreLocalListForCreate",

                            method = RequestMethod.POST,

                            consumes = MediaType.APPLICATION_JSON_VALUE)

       @ResponseBody

       public ResultModel selectStoreLocalListForCreate() {

              log.info(this.getClass().getName()+".selectStoreLocalListForCreate.start");

              ResultModel resultModel = new ResultModel();

              Map result=new HashMap();

              try{

                     result=storeLocalPmService.selectStoreLocalListForCreate();

                  log.info(this.getClass().getName()+".selectStoreLocalListForCreate.success.result="+result);

                  resultModel.setResultCode(Constants.SERVICE_SUCCESS_CODE);

                     resultModel.setResultMsg(Constants.DATA_BASE_ADD_SUCCESS_MSG);

                     resultModel.setResultData(result);

              }catch(Exception e){

                     resultModel.setResultCode(Constants.SERVICE_ERROR_CODE);

                     resultModel.setResultMsg(Constants.DATA_BASE_SEARCH_ERROR_MSG);

              }     

          log.info(this.getClass().getName()+".selectStoreLocalListForCreate.end.resultModel="+resultModel);

              return resultModel;

       }

post有参测试:

/**

        * 新增一条数据

        * @throws Exception

        */

       @Test

       public void testInsert() throws Exception {

//            StoreLocalPm storeLocalPm=new StoreLocalPm ();

//            storeLocalPm.setStoreNo("562");

//            storeLocalPm.setMaintainLocalPm("设备经理。。。");

//            storeLocalPm.setProjectLocalPm("工程经理。。。");

//            storeLocalPm.setItLocalPm("it工程经理");

//            storeLocalPm.setTaxpayer("纳税主体信息。。。");

//            ResultModel resultModel=storeLocalPmController.insertStoreLocalPm(storeLocalPm);

//            System.out.println("testInsert--------resultModel="+resultModel);

             

              String url = "/storeLocalPm/insertStoreLocalPm";

             

              StoreLocalPm storeLocalPm=new StoreLocalPm ();

              storeLocalPm.setStoreNo("589");

              storeLocalPm.setMaintainLocalPm("设备经理。。。");

              storeLocalPm.setProjectLocalPm("工程经理。。。");

              storeLocalPm.setItLocalPm("it工程经理");

              storeLocalPm.setTaxpayer("纳税主体信息。。。");

        ObjectMapper mapper = new ObjectMapper();

     

        String json = mapper.writeValueAsString(storeLocalPm);

    

        MvcResult result = (MvcResult) mockMvc.perform(post(url)

                     .contentType(MediaType.APPLICATION_JSON)

                     .content(json)

                     .param("epsToken", "token")

                     .accept(MediaType.APPLICATION_JSON))

                     .andExpect(status().isOk())

                     .andDo(MockMvcResultHandlers.print())

                           .andReturn();

                Assert.assertEquals(200, result.getResponse().getStatus());

        Assert.assertNotNull(result.getResponse().getContentAsString());

       }

 

/**

        * insert StoreLocalPm

        * 新增一条数据

        * @param record

        * @return

        * @throws Exception

        */

        @RequestMapping(value = "/insertStoreLocalPm", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)

        @ResponseBody

        public ResultModel insertStoreLocalPm(@RequestBody StoreLocalPm storeLocalPm) throws Exception {

    log.info(this.getClass().getName()+".insertStoreLocalPm.start.storeLocalPm="+JSON.toJSONString(storeLocalPm));

       ResultModel result = new ResultModel();

              int number=0;

              storeLocalPm.setAuditStatus("0");//0未审核 1通过 2不通过

              number= storeLocalPmService.insertStoreLocalPm(storeLocalPm);

              if(number<1){

                           log.error(this.getClass().getName()+".insertStoreLocalPm.50010"+"新增一条数据number="+JSON.toJSONString(number));

                     throw new Exception("50010"+"新增失败");

              }

              result.setResultCode(Constants.SERVICE_SUCCESS_CODE);

              result.setResultMsg(Constants.DATA_BASE_ADD_SUCCESS_MSG);

              result.setResultData(number);

              log.info(this.getClass().getName()+".insertStoreLocalPm.end.result="+result);

              return result;

       }

 

posted @ 2017-01-08 15:33  望梦圆  阅读(320)  评论(0编辑  收藏  举报
https://meilishiyan-song.taobao.com/