`
jhyimu2005
  • 浏览: 185741 次
  • 性别: 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));
	}
	
	
}

分享到:
评论

相关推荐

    mock struts1 测试

    在传统的Struts1应用程序中,Action类往往需要与`HttpServletRequest`和`HttpServletResponse`对象交互,这使得直接对Action类进行单元测试变得非常困难。因此,引入Mock技术就显得尤为重要。通过模拟`...

    mock

    在Struts2中,有多种方式来实现Mock测试: 1. `junit怎么测试struts里的Action.htm`:这个文件名暗示了如何使用JUnit进行Struts2 Action的测试。JUnit是Java开发中最常用的单元测试框架,可以配合Mockito或EasyMock...

    Struts2+Spring+hibernate中对action的单元测试环境搭建[总结].pdf

    在 Struts2+Spring+Hibernate 框架中,对 Action 的单元测试环境的搭建是一个非常重要的步骤。本文将详细介绍如何在 Struts2+Spring+Hibernate 框架中搭建 Action 的单元测试环境。 首先,需要了解为什么需要对 ...

    Junit 单元测试完整案例

    4. 测试Action类:通过模拟Service层的依赖,直接测试Action类的execute()方法,确保业务逻辑的正确性。 四、测试实践 在案例中,你将看到如何创建测试类,定义测试方法,设置测试数据,以及如何利用JUnit和Spring...

    Struts2SpringUnitDemo单元测试

    例如,当测试一个Action时,可能会用Mock对象来替代实际的Service,以避免对数据库或其他服务的依赖。 8. **持续集成(CI)**:项目可能集成了持续集成工具,如Jenkins或GitLab CI/CD,这样每次代码提交都会触发...

    Struts+Spring框架下的单元测试[总结].pdf

    总之,单元测试是保证代码质量的重要手段,在Struts+Spring的环境下,需要结合JUnit和Mockito等工具,对Action、Service和DAO进行有效的测试,确保每一层的功能都能够正确无误地工作。通过详尽的测试,可以提前发现...

    Struts2框架单元测试代码

    Struts2框架是一款广泛应用于Java Web开发中的开源MVC框架,它简化了Web应用程序的构建,使得业务逻辑、控制逻辑和视图层得以分离。单元测试对于任何软件项目都至关重要,因为它能确保代码的正确性,提高代码质量...

    JUnit_in_Action,_2nd_Edition.pdf

    - **第11章:界面层测试**:针对用户界面的测试方法和技术。 - **第12章:Ajax测试**:探讨如何测试异步JavaScript和XML(Ajax)应用。 - **第13章:使用Cactus进行服务器端测试**:介绍如何对服务器端进行有效的...

    百灵报表 dome mock 实例 hibernate spring struts2 struts

    而“src”目录通常包含项目的源代码,可能包括Hibernate的实体类、DAO(Data Access Object)层、Service层以及Struts2或Struts的Action类等。 这个项目可能是为了演示如何在BIRT报表中利用Hibernate查询数据库,...

    通向架构师的道路(第二十五天)SSH的单元测试与dbunit的整合的例子

    接着,对于Struts2的Action类,通常我们需要模拟Service层的调用来测试Action的行为。可以利用Mockito这样的库来创建mock对象,使得Action不依赖于真实的Service执行。例如,通过`@Mock`注解创建mock Service,然后...

    StrutsTestCase工程例子

    6. **Mock Objects**:为了隔离Action类,可能使用了Mock对象来模拟Service层的调用,这样可以专注于Action的逻辑测试,而不是依赖外部服务。 7. **预期结果文件**:可能包括一些预期的输出结果,用于与实际测试...

    Webwork.in.action最新中文版

    在实际开发中,Webwork还强调了可测试性,通过分离业务逻辑和表示层,使得单元测试更加便捷。书中会详细讲解如何利用Mock对象和依赖注入进行测试,以保证代码质量。 除了核心技术外,《Webwork.in.Action》也会涵盖...

    Struts+Spring框架下的单元测试[收集].pdf

    单元测试通常是对单个组件,如Action、Service或DAO类进行独立的测试,以验证它们的功能是否按预期工作。以下是如何在Struts+Spring环境中进行单元测试的详细步骤和关键点: 首先,我们来看一下Struts框架下Action...

    JUnit in Action

    对于更复杂的测试场景,如模拟对象(Mock Objects)和测试隔离,书中也进行了详尽的探讨。JUnit支持使用注解(Annotations)来简化测试配置,例如@Test、@Before和@After,这些在书中都有清晰的解释和实例展示。同时...

    Manning.-.JUnit.in.Action.2nd.Edition.2010

    通过对不同类型的测试(如单元测试、集成测试等)的讨论,帮助读者理解如何制定有效的测试策略。 - **第6章:使用存根进行粗粒度测试** 存根(stubs)是一种模拟对象,用于替换真实的依赖项。本章将介绍如何...

Global site tag (gtag.js) - Google Analytics