一 :直接测试方法
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中加入如下配置:
- <project>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <testFailureIgnore>true</testFailureIgnore>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </project>
注意:因为模拟request,response需要javax.servlet,AsycnContext类的支持,所以还需要导入javax.servlet3.0 Jar包的支持。
maven pom.xml配置代码如下:
- <dependencies>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>3.1.0</version>
- </dependency>
- </dependencies>
相关推荐
JUnit作为Java领域最流行的单元测试框架,与Spring MVC和Spring Boot的集成使得开发者能够更高效地进行测试驱动开发(TDD)或行为驱动开发(BDD)。下面将详细介绍这个主题中的相关知识点。 1. JUnit JUnit是一个...
这篇博客主要探讨了如何使用JUnit进行Spring MVC Controller的单元测试。在实际开发中,单元测试可以帮助我们尽早发现潜在的问题,提高软件的可靠性和可维护性。 首先,让我们了解Spring MVC的基本概念。Spring MVC...
总结来说,使用JUnit针对Spring MVC的三层进行测试,我们需要: 1. 测试表现层(Controller),验证HTTP请求处理和视图渲染。 2. 测试业务层,确保业务逻辑的正确性和依赖隔离。 3. 测试服务数据访问层,验证数据库...
6. **spring-test-4.3.4.RELEASE.jar**:提供了对Spring应用进行单元测试和集成测试的支持,包括TestContext框架、Mock对象和JUnit集成。 7. **jstl-1.2-sources.jar**:JavaServer Pages Standard Tag Library,是...
在IT行业中,集成测试是确保不同组件协同工作的重要环节,特别是在使用Spring MVC构建大型Web应用程序时。本篇文章将深入探讨如何结合TestNG、Mockito以及Spring的自动装配注解进行有效的集成测试。以下是对这些技术...
- 容易测试:通过 Mock 对象和 TestNG/SpringJUnit 支持,方便进行单元测试。 - 强大的数据绑定和验证:自动将表单数据绑定到 Bean,且提供验证机制。 - 自动资源处理:通过 HandlerAdapter 和 ViewResolver 实现...
MockMVC是Spring MVC框架的一部分,用于进行RESTful风格的单元测试。它允许开发者模拟HTTP请求,测试控制器层的逻辑,而无需启动整个Web服务器。MockMVC可以帮助验证控制器处理方法的响应状态、内容和头信息,确保...
4. **Web应用程序测试**: Spring Test模块包含`MockMvc`类,用于模拟Spring MVC的请求和响应,可以在不运行整个服务器的情况下进行控制器的单元测试。 5. **Database测试**: 使用`@Sql`和`@SqlGroup`注解,可以执行...
Spring Test使得测试Spring配置、Spring Beans以及Spring MVC控制器变得异常简单。它包括了如`@ContextConfiguration`注解,用于加载测试所需的上下文配置;`@Autowired`用于自动注入依赖;`@MockBean`用于创建模拟...
本文将详细介绍如何使用Spring MVC的Mock测试机制来直接测试Controller层代码,以便更好地隔离和验证控制器的行为。 **什么是Mock测试?** Mock测试是一种软件测试技术,它允许在不依赖真实环境或第三方组件的情况...
可以使用JUnit、Mockito等工具对Spring Bean进行单元测试,而Struts的Action可以通过Struts Test或者Mock Struts进行模拟测试。 9. **最佳实践**:在实际开发中,应遵循良好的设计原则,如单一职责原则、开闭原则等...
4. **模拟对象**:Spring测试框架允许我们使用`@MockBean`和`@SpyBean`注解来模拟或监控某些bean的行为,避免了在测试中不必要的依赖。这有助于创建隔离的测试环境。 5. **断言**:JUnit提供了多种断言方法,如`...
例如,@ContextConfiguration注解可以用来加载测试所需的Spring配置,而@MockBean或@SpyBean则可以帮助我们创建和配置模拟对象,以隔离被测试代码和外部依赖。 总的来说,Spring Framework 2.5.6与JUnit 4.4以及...
4. Web应用支持:Spring MVC是Spring提供的Web应用框架,它提供了一种模型-视图-控制器的架构模式,使得开发者可以更专注于业务逻辑,而不是底层的HTTP处理。 Junit作为单元测试工具,它为Java开发者提供了编写测试...
本篇将深入探讨JUnit的使用以及在Spring MVC中的应用。 首先,我们来了解JUnit的基础知识。JUnit是一个开源的、基于Java的测试框架,它允许程序员编写可自动运行的测试用例。测试用例通常包含一系列方法,每个方法...
此外,Spring 还提供了其他的测试支持,例如 `@MockBean` 可以在测试上下文中注入模拟对象,`@SpyBean` 可以创建部分模拟的 bean,`@DataJpaTest` 和 `@WebMvcTest` 分别用于数据访问层和 Web MVC 层的测试。...
对于集成测试,可以借助Struts2提供的Mock对象模拟请求,以及Spring Test库来启动整个应用上下文。测试应覆盖所有业务流程,确保SSH整合后功能的正确性。 **所需jar包**: 在“lib”目录下的jar文件包含了SSH框架...
Spring MVC 是一个强大的Java Web开发框架,主要用于构建后端服务,它使得开发者可以方便地创建高效、可测试的Web应用程序。在这个"spring-mvc-without-db"项目中,我们将探讨如何在不依赖数据库的情况下使用Spring ...
在Spring Boot项目中,我们通常使用`@RunWith(SpringRunner.class)`来运行JUnit测试,并且使用`@SpringBootTest`注解来启动一个Spring应用上下文。 Mockito是一个流行的Java模拟框架,它允许我们在测试中模拟依赖...
- 使用JUnit进行单元测试,可以单独测试Spring服务层和MongoDB操作的正确性。 - 使用Struts的Mock测试工具,模拟HTTP请求,测试Action的逻辑。 - 通过MongoDB的日志和Spring的AOP日志,可以追踪数据访问和事务...