`
jhyimu2005
  • 浏览: 182276 次
  • 性别: Icon_minigender_2
  • 来自: 苏州
社区版块
存档分类
最新评论

对action层做mock测试

阅读更多
在以前总认为做web开发是一件比较头疼的,至少页面让我比较头疼,还有最最中的的是以前总认为我对action层的代码进行测试必须得等到界面写出来才可以进行测试。等真正做了web开发才发现,以前的自己是多么的无知,呵呵!原来可以使使用mock对它进行测试。
假如action的一函数
@Controller
@RequestMapping
public 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));
	}
	
	
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics