`

spring controller层测试

阅读更多
这是我最近写的测试类对应的方法的测试代码其下面,请大家提一些建议,看哪里写的不周到,谢谢,       

    PositionController postController;  Controller对象
第一个方法:
    public String allPositions(HttpServletRequest request, ModelMap model) {
TableFacade tableFacade = TableFacadeFactory.createSpringTableFacade("allPositionsTable", request);
tableFacade.setMaxRows(10);
Limit limit = tableFacade.getLimit();
FilterSet filterSet = limit.getFilterSet();
int totalRows = projectService.getTotalRowCountForPositions(filterSet);
tableFacade.setTotalRows(totalRows);

SortSet sortSet = limit.getSortSet();
int rowStart = limit.getRowSelect() == null? 0 : limit.getRowSelect().getRowStart();
int rowEnd = limit.getRowSelect() == null? 10 : limit.getRowSelect().getRowEnd();

List<Position> positions = projectService.getPositions(filterSet, sortSet, rowStart, rowEnd);

model.addAttribute("positions", positions);
model.addAttribute("limit", limit);
return "/core/positions_table";

它对应的测试程序如下:     
        @Test
public void testAllPositions(){
String view = postController.allPositions(request, model);
Limit limit = (Limit)model.get("limit");
List<Position> positions = (List<Position>)model.get("positions");

Assert.assertNotNull(model.get("positions"));
Assert.assertEquals(10, positions.size());
Assert.assertNotNull(model.get("limit"));
Assert.assertEquals(0, limit.getRowSelect().getRowStart());
Assert.assertEquals(10, limit.getRowSelect().getRowEnd());
Assert.assertTrue(view.contains("/core/positions_table"));

}

     第二个方法:
public String getAllPosition(HttpServletRequest request,
HttpServletResponse response,
ModelMap model) {
List<Position> positions = this.positionService.getAllPositions();
//define the number of max rows per page for jmesa when the result is empty
Integer maxRows = 10;
if (CollectionUtils.isNotEmpty(positions)) {
maxRows = positions.size();
}
model.addAttribute("count", maxRows);
request.getSession().setAttribute("positions",positions);
return "/crt/position_table";
}
它对应的测试程序如下: 
@Test
public void testGetAllPosition(){
String view = postController.getAllPosition(request, response, model);
List<Position> positions = (List<Position>)request.getSession().getAttribute("positions");
int maxRow = (Integer)model.get("count");

Assert.assertNotNull(positions);
Assert.assertEquals(maxRow, positions.size());
Assert.assertTrue(view.contains("/crt/position_table"));
}

第三个方法:
public void getBindPositionRolesInAllRoles(Integer positionId, HttpServletRequest request, HttpServletResponse response, ModelMap model) {
Map<String, List<CurrentRoleObject>> groupRoles = new HashMap<String, List<CurrentRoleObject>>();

try {

groupRoles = positionService.getBindPositionRoleInAllRole(positionId);

} catch (Exception e) {
MessageUtils.outputJSONResult("occurError", response);
return;
}

MessageUtils.outputJSONResult(JSONObject.fromObject(groupRoles).toString(), response);
}
它对应的测试程序如下: 
@Test
public void testGetBindPositionRolesInAllRoles(){
postController.getBindPositionRolesInAllRoles(1, request, response, model);

try {
Assert.assertEquals("utf-8", response.getCharacterEncoding());
Assert.assertNotNull(response.getContentAsString());
//just the content whether is json format
boolean flag = false;
try{
JSONObject.fromObject(JSONObject.fromObject(response.getContentAsString()));
flag = true;
}catch (Exception e){
flag = false;
}
Assert.assertEquals(true, flag);

} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}

工具类MessageUtils的方法:
public static void outputJSONResult(String result, HttpServletResponse response) {
try {
response.setHeader("ContentType", "text/json");
response.setCharacterEncoding("utf-8");
PrintWriter pw = response.getWriter();
pw.write(result);
pw.flush();
pw.close();

} catch (IOException e) {
e.printStackTrace();
}
}
0
0
分享到:
评论

相关推荐

    spring MVC junit 单元测试(controller)

    在Spring MVC框架中,单元测试是确保代码质量的重要步骤,特别是在控制器层(Controller)。这篇博客主要探讨了如何使用JUnit进行Spring MVC Controller的单元测试。在实际开发中,单元测试可以帮助我们尽早发现潜在...

    原生Servlet与Spring Controller性能比较--Controller项目

    在"Controller项目"中,我们可以通过编写基准测试(如使用JMeter或 Gatling)来具体比较原生Servlet和Spring Controller在处理相同请求时的性能。这有助于了解在特定场景下哪种方式更适合。 总的来说,原生Servlet...

    Spring Boot从Controller层进行单元测试的实现

    总的来说,Spring Boot的Controller层单元测试提供了一种有效的方式,让我们能够在不运行整个应用程序的情况下,验证Controller的逻辑。它帮助我们发现和修复潜在的问题,提高代码质量和可靠性。通过精心设计和执行...

    Spring Boot中Controller间的调用

    Controller层应当尽可能轻量,主要负责处理HTTP请求和调用业务逻辑层(BLL)或数据访问层(DAO)。如果Controller间有共享逻辑,可以考虑提取至公共服务或抽象类。通过解耦和模块化设计,可以避免直接的Controller间...

    07. Spring Boot单元测试

    对于处理HTTP请求的Controller层,Spring Boot提供了`@WebMvcTest`注解,它将启动一个简化版的Spring MVC上下文,只包含Web相关的bean。结合`@MockMvc`,我们可以模拟HTTP请求并验证Controller的响应。 五、Service...

    原生Servlet与Spring Controller性能比较--Servlet项目

    在Java Web开发中,Servlet和Spring MVC(主要通过Controller)是两种常见的请求处理机制。本文将深入探讨原生Servlet与Spring Controller在性能方面的差异,并基于一个名为"AbTest"的Servlet项目源码进行分析。 ...

    junit针对spring mvc三层测试

    本测试着重关注Spring MVC架构中的三层:表现层(Presentation Layer)、业务层(Business Logic Layer)和服务数据访问层(Service and Data Access Layer)。下面我们将详细探讨如何使用JUnit进行针对这三层的测试...

    springaop拦截controller日志

    "springaop拦截controller日志"这个主题旨在讲解如何使用Spring AOP来拦截Controller层的方法调用,并在方法执行前后记录相关日志。 首先,了解Spring AOP的基本概念。AOP是一种编程范式,它允许程序员定义“切面”...

    spring mvc的简单单元测试

    Spring MVC 提供了对单元测试的良好支持,使得我们可以方便地测试控制器、服务层以及数据访问层。 在Spring MVC中进行单元测试,我们通常会用到以下关键技术和工具: 1. **JUnit**:JUnit是Java编程语言中最常用的...

    SpringBoot Controller Post接口单元测试示例

    要对 SpringBoot Controller 层进行单元测试,我们需要使用 JUnit 框架和 Spring Boot 提供的测试注解。首先,我们需要添加依赖项,包括 junit-jupiter-api、junit-jupiter-engine 和 spring-boot-starter-test。...

    Spring对于业务层的单元测试支持

    `@AutoConfigureMockMvc`则帮助你配置Mock MVC,方便测试Controller层。 为了确保业务层的正确性,我们还需要关注数据访问对象(DAO)的测试。Spring Data JPA提供了`@Query`注解,允许自定义SQL或HQL查询,而在...

    spring单元测试

    在Spring中,我们可以使用`@RunWith(SpringRunner.class)`和`@SpringBootTest`注解来启动一个完整的Spring应用上下文,以便测试Controller层。例如,对于一个名为`MyController`的Controller,我们可以创建如下测试...

    SpringBoot 多模块 Serivce 层单元测试

    每个模块都有明确的职责,Service层则主要负责处理业务逻辑,它依赖于Repository层与数据交互,并为Controller层提供服务。 进行Service层的单元测试,我们主要关注以下几个方面: 1. **测试环境配置**:在IDEA中...

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

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

    Spring Boot中的单元测试.pdf

    对于Controller层的测试,Spring Boot提供了`MockMvc`工具,它可以模拟MVC环境,允许你发送HTTP请求到Controller并检查响应。例如: ```java @Autowired private MockMvc mockMvc; @Test public void test...

    spring4+springMVC+Mybatis项目搭建以及测试demo

    11. **Controller层** 创建Controller类,处理HTTP请求,调用Service层的方法,返回响应数据。在Controller中使用@Autowired注解注入Service实例。 12. **测试** 使用JUnit进行单元测试,测试Service和DAO的功能...

    spring源码

    1. 表现层(Presentation Layer):通常由Spring MVC的Controller组件负责。Controller接收HTTP请求,处理用户交互,调用业务逻辑,然后将结果转发到视图进行渲染。Controller通过@RequestMapping注解与URL路径绑定...

    spring mybatis maven测试项目

    这些文件可能包括Spring的配置文件、Spring MVC的Controller类、Service层的接口和实现,以及与MyBatis相关的Mapper接口和XML配置。 总的来说,Spring、MyBatis和Maven的组合提供了一种强大的开发模式,使得我们...

    SpringTest_springtest_spring_java_Framework_

    1. **源代码**:包含了用Java编写的Spring应用程序,可能有服务层(Service)、持久层(Repository)、控制层(Controller)等。 2. **配置文件**:如`applicationContext.xml`或`@Configuration`注解的Java类,用于...

    spring-boot-test示例程序

    Spring Test提供了`@WebMvcTest`注解,用于启动一个只包含Web层组件的ApplicationContext,可以隔离地测试Controller。使用`MockMvc`类,我们可以模拟HTTP请求,比如`mockMvc.perform(get("/api"))`,并验证响应结果...

Global site tag (gtag.js) - Google Analytics