对action层做mock测试

xiaoxiao2023-11-21  12

在以前总认为做web开发是一件比较头疼的,至少页面让我比较头疼,还有最最中的的是以前总认为我对action层的代码进行测试必须得等到界面写出来才可以进行测试。等真正做了web开发才发现,以前的自己是多么的无知,呵呵!原来可以使使用mock对它进行测试。 假如action的一函数 @Controller@RequestMappingpublic class ExperimentController { @Resource(name = "experimentService") private IExperimentService experimentService; private final String ERROR_PAGE = "/core/404";/** * To add or modify a Experiment object * * @param experiment Experiment * @param request HttpServletRequest * @param response HttpServletResponse * @return the path that is after added successfully path */ @RequestMapping public String addOrModifyExperiment(Experiment experiment, HttpServletRequest request, HttpServletResponse response) { if (experiment.getStatus() == null) { request.setAttribute("message", "The fileds of experiment that is status can't be empty!"); return "/bio/manage/experiment"; } if (!experimentService.addOrModifyExperiment(experiment)) { request.setAttribute("messages", "Add failed!"); return ERROR_PAGE; } return "/bio/manage/experiment"; }} 其对应的测试类为: package com.founder.cims.bio.action;import javax.annotation.Resource;import javax.sql.DataSource;import junit.framework.Assert;import org.apache.log4j.Logger;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.mock.web.MockHttpServletRequest;import org.springframework.mock.web.MockHttpServletResponse;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.founder.cims.bio.model.Experiment;import com.founder.cims.bio.model.ExperimentProcess;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = {"classpath:/spring/applicationContext.xml"})public class AddExperimentProcessTest extends AbstractTransactionalJUnit4SpringContextTests{ private static final Logger logger = Logger.getLogger(AddExperimentProcessTest.class); private MockHttpServletRequest request; private MockHttpServletResponse response; private ExperimentProcess experimentProcess = null; @Autowired private ManagerController managerController; @Override @Resource(name = "dataSource") public void setDataSource(DataSource dataSource) { super.setDataSource(dataSource); } @Before public void before(){ logger.info("before....."); request = new MockHttpServletRequest(); response = new MockHttpServletResponse(); } @After public void after(){ logger.info("after....."); } @Test public void testAddExperimentProcessStatusIsNull() { Experiment experiment = new Experiment(); experiment.setId(1); experimentProcess = new ExperimentProcess(); experimentProcess.setName("test solfware"); experimentProcess.setExperiment(experiment); managerController.addExperimentProcess(experimentProcess, request, response); Assert.assertEquals("The fileds of experimentProcess that is status and name can't be empty!", request.getAttribute("message")); } @Test public void testAddExperimentSucess() { Experiment experiment = new Experiment(); experiment.setId(1); experimentProcess = new ExperimentProcess(); experimentProcess.setStatus(1); experimentProcess.setName("test solfware"); experimentProcess.setExperiment(experiment); Assert.assertEquals("/bio/manage/experimentProcess", managerController.addExperimentProcess(experimentProcess, request, response)); }}
转载请注明原文地址: https://www.6miu.com/read-5011374.html

最新回复(0)