`
这些年
  • 浏览: 399748 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring mvc + junit + mock

 
阅读更多

一 :直接测试方法

1. 首先开发一个基类,用于载入配置文件。以下所有的测试实现类都要继承这个类

import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath*:dataSource-context.xml", "classpath*:persistence-context.xml",
		"classpath*:service-context.xml", "classpath*:mybatis-config.xml",
		"classpath*:src/main/webapp/WEB-INF/mvc-dispatcher-servlet.xml"
})
// 当然 你可以声明一个事务管理 每个单元测试都进行事务回滚 无论成功与否
@TransactionConfiguration(defaultRollback = true)
// 记得要在XML文件中声明事务哦~~~我是采用注解的方式
@Transactional
public class SpringMVCTestContent {

}

 2:对用户登入测试

 

      1):用户登入Controller

 

 

	@RequestMapping(value = "/user", method = RequestMethod.POST)
	public String userLogin(@RequestParam(value = "user_id", required = false) String userid,
			@RequestParam(value = "passwd", required = false) String passwd, HttpServletRequest request, Model model) {
		if (userid == null || passwd == null) {
			model.addAttribute("loginerror", "查无此人");
			return "login";
		}
                  // ........ 
			}

     2):测试类

import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;

import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.ui.Model;

import com.chinacache.SpringMVCTestContent;

public class LoginTest extends SpringMVCTestContent {
	// 模拟request,response
	private MockHttpServletRequest request;
	private MockHttpServletResponse response;

	// 注入userController
	@Autowired
	private LoginController loginController;

	// 执行测试方法之前初始化模拟request,response
	@Before
	public void setUp() {
		request = new MockHttpServletRequest();
		request.setCharacterEncoding("UTF-8");
		response = new MockHttpServletResponse();
	}

	@Test
	public void testLogin() {
		Model a = mock(Model.class); //mock  model对象 
		assertEquals("login", loginController.userLogin(null, null, request, a));
	}
}

 

以下摘自:http://ysj5125094.iteye.com/blog/2082110

注意:如果是Maven项目,当执行Maven install时,可能会报错误,造成不能正确生成war包。此时需要在pom.xml中加入如下配置:

 

Xml代码  收藏代码
  1. <project>  
  2.     <build>  
  3.         <plugins>  
  4.             <plugin>  
  5.                 <groupId>org.apache.maven.plugins</groupId>  
  6.                 <artifactId>maven-surefire-plugin</artifactId>  
  7.                  <configuration>  
  8.                      <testFailureIgnore>true</testFailureIgnore>  
  9.                  </configuration>  
  10.             </plugin>  
  11.         </plugins>  
  12.     </build>  
  13. </project>  

 

 

注意:因为模拟request,response需要javax.servlet,AsycnContext类的支持,所以还需要导入javax.servlet3.0 Jar包的支持。

maven pom.xml配置代码如下:

Xml代码  收藏代码
  1. <dependencies>  
  2.          <dependency>  
  3.         <groupId>javax.servlet</groupId>  
  4.         <artifactId>javax.servlet-api</artifactId>  
  5.         <version>3.1.0</version>  
  6.     </dependency>       
  7. </dependencies>  

 

分享到:
评论

相关推荐

    单元测试案例junit +spring mvc +springboot

    JUnit作为Java领域最流行的单元测试框架,与Spring MVC和Spring Boot的集成使得开发者能够更高效地进行测试驱动开发(TDD)或行为驱动开发(BDD)。下面将详细介绍这个主题中的相关知识点。 1. JUnit JUnit是一个...

    spring MVC junit 单元测试(controller)

    这篇博客主要探讨了如何使用JUnit进行Spring MVC Controller的单元测试。在实际开发中,单元测试可以帮助我们尽早发现潜在的问题,提高软件的可靠性和可维护性。 首先,让我们了解Spring MVC的基本概念。Spring MVC...

    junit针对spring mvc三层测试

    总结来说,使用JUnit针对Spring MVC的三层进行测试,我们需要: 1. 测试表现层(Controller),验证HTTP请求处理和视图渲染。 2. 测试业务层,确保业务逻辑的正确性和依赖隔离。 3. 测试服务数据访问层,验证数据库...

    spring-mvc开发所有jar包【4.3.4】

    6. **spring-test-4.3.4.RELEASE.jar**:提供了对Spring应用进行单元测试和集成测试的支持,包括TestContext框架、Mock对象和JUnit集成。 7. **jstl-1.2-sources.jar**:JavaServer Pages Standard Tag Library,是...

    基于TestNG+Mockito及自动装配注解的Spring MVC集成测试

    在IT行业中,集成测试是确保不同组件协同工作的重要环节,特别是在使用Spring MVC构建大型Web应用程序时。本篇文章将深入探讨如何结合TestNG、Mockito以及Spring的自动装配注解进行有效的集成测试。以下是对这些技术...

    springmvc jar 包

    - 容易测试:通过 Mock 对象和 TestNG/SpringJUnit 支持,方便进行单元测试。 - 强大的数据绑定和验证:自动将表单数据绑定到 Bean,且提供验证机制。 - 自动资源处理:通过 HandlerAdapter 和 ViewResolver 实现...

    junit单元测试及Mock应用,超详细的PPT实战应用

    MockMVC是Spring MVC框架的一部分,用于进行RESTful风格的单元测试。它允许开发者模拟HTTP请求,测试控制器层的逻辑,而无需启动整个Web服务器。MockMVC可以帮助验证控制器处理方法的响应状态、内容和头信息,确保...

    spring整合单元测试Junit开发包

    4. **Web应用程序测试**: Spring Test模块包含`MockMvc`类,用于模拟Spring MVC的请求和响应,可以在不运行整个服务器的情况下进行控制器的单元测试。 5. **Database测试**: 使用`@Sql`和`@SqlGroup`注解,可以执行...

    spring-text-3.2.8和junit4.10

    Spring Test使得测试Spring配置、Spring Beans以及Spring MVC控制器变得异常简单。它包括了如`@ContextConfiguration`注解,用于加载测试所需的上下文配置;`@Autowired`用于自动注入依赖;`@MockBean`用于创建模拟...

    详解Spring MVC如何测试Controller(使用springmvc mock测试)

    本文将详细介绍如何使用Spring MVC的Mock测试机制来直接测试Controller层代码,以便更好地隔离和验证控制器的行为。 **什么是Mock测试?** Mock测试是一种软件测试技术,它允许在不依赖真实环境或第三方组件的情况...

    Spring+Struts

    可以使用JUnit、Mockito等工具对Spring Bean进行单元测试,而Struts的Action可以通过Struts Test或者Mock Struts进行模拟测试。 9. **最佳实践**:在实际开发中,应遵循良好的设计原则,如单一职责原则、开闭原则等...

    Spring_Junit

    4. **模拟对象**:Spring测试框架允许我们使用`@MockBean`和`@SpyBean`注解来模拟或监控某些bean的行为,避免了在测试中不必要的依赖。这有助于创建隔离的测试环境。 5. **断言**:JUnit提供了多种断言方法,如`...

    spring-framework-2.5.6 (含junit-4.4.jar、spring-test.jar)

    例如,@ContextConfiguration注解可以用来加载测试所需的Spring配置,而@MockBean或@SpyBean则可以帮助我们创建和配置模拟对象,以隔离被测试代码和外部依赖。 总的来说,Spring Framework 2.5.6与JUnit 4.4以及...

    spring宝典 书籍源代码 junit

    4. Web应用支持:Spring MVC是Spring提供的Web应用框架,它提供了一种模型-视图-控制器的架构模式,使得开发者可以更专注于业务逻辑,而不是底层的HTTP处理。 Junit作为单元测试工具,它为Java开发者提供了编写测试...

    Junit 测试

    本篇将深入探讨JUnit的使用以及在Spring MVC中的应用。 首先,我们来了解JUnit的基础知识。JUnit是一个开源的、基于Java的测试框架,它允许程序员编写可自动运行的测试用例。测试用例通常包含一系列方法,每个方法...

    Spring是如何整合JUnit的?JUnit源码关联延伸阅读.doc

    此外,Spring 还提供了其他的测试支持,例如 `@MockBean` 可以在测试上下文中注入模拟对象,`@SpyBean` 可以创建部分模拟的 bean,`@DataJpaTest` 和 `@WebMvcTest` 分别用于数据访问层和 Web MVC 层的测试。...

    SSH(struts2,Hibernate,Spring)整合及测试亲测可用所需jar包

    对于集成测试,可以借助Struts2提供的Mock对象模拟请求,以及Spring Test库来启动整个应用上下文。测试应覆盖所有业务流程,确保SSH整合后功能的正确性。 **所需jar包**: 在“lib”目录下的jar文件包含了SSH框架...

    spring-mvc-without-db:没有数据库的Spring MVC

    Spring MVC 是一个强大的Java Web开发框架,主要用于构建后端服务,它使得开发者可以方便地创建高效、可测试的Web应用程序。在这个"spring-mvc-without-db"项目中,我们将探讨如何在不依赖数据库的情况下使用Spring ...

    spring-unit-tests:Spring Boot +单元测试+ Mockito + MVC-用于控制器和服务层

    在Spring Boot项目中,我们通常使用`@RunWith(SpringRunner.class)`来运行JUnit测试,并且使用`@SpringBootTest`注解来启动一个Spring应用上下文。 Mockito是一个流行的Java模拟框架,它允许我们在测试中模拟依赖...

    mongodb+spring+strust框架

    - 使用JUnit进行单元测试,可以单独测试Spring服务层和MongoDB操作的正确性。 - 使用Struts的Mock测试工具,模拟HTTP请求,测试Action的逻辑。 - 通过MongoDB的日志和Spring的AOP日志,可以追踪数据访问和事务...

Global site tag (gtag.js) - Google Analytics