`

Mockito 测试Controller

 
阅读更多

Controller类

LoginController.java

package org.jinglun.base.controller;

import javax.validation.Valid;

import org.jinglun.base.dto.LoginDto;
import org.jinglun.base.service.LoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping(value="/login")
public class LoginController {

    private LoginService loginService;

    @Autowired
    LoginController(LoginService loginService) {
        this.loginService = loginService;
    }

    @RequestMapping(value={"", "/"}, method=RequestMethod.POST)
    public String login(@Valid LoginDto dto, BindingResult result) throws Exception {
        if (result.hasErrors()) {
            return "login";
        }
        if (loginService.login(dto)) {
            return "home";
        } else {
            return "login";
        }
    }
}

 

测试类

LoginControllerTest.java

package org.jinglun.base.controller;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.any;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.standaloneSetup;

import org.jinglun.base.dto.LoginDto;
import org.jinglun.base.service.LoginService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(locations = {"classpath:spring-web.xml","classpath:spring-dao.xml","classpath:spring-mybatis.xml","classpath:spring-service.xml"})
public class LoginControllerTest {

    @Test
    public void testLogin() throws Exception {
        try {
            LoginService service = mock(LoginService.class);
            LoginController controller = new LoginController(service);
            when(service.login(any(LoginDto.class))).thenReturn(true);

            MockMvc mockmvc = standaloneSetup(controller).build();
            mockmvc.perform(post("/login")
                    .param("username", "admin")
                    .param("password", "admin"))
                    .andExpect(view().name("home"));
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

分享到:
评论

相关推荐

    spring集成TestNG与Mockito框架单元测试方法.pdf

    接下来,文档给出了不同测试类的参考示例,例如TestNGDemo、MockitoDemo、Controller单元测试类、Service服务单元测试类以及Dubbo服务单元测试类。通过查看这些示例代码,开发者可以了解如何在实际项目中编写各种...

    spring MVC junit 单元测试(controller)

    在实际应用中,我们可以结合Mockito、PowerMock等工具进一步增强测试能力,例如模拟静态方法、私有方法或构造函数的行为。此外,还可以考虑使用持续集成工具(如Jenkins、Travis CI)自动化测试过程,确保每次代码...

    SpringMvcMybatis3Demo

    6. **测试**:学习示例可能还包括单元测试和集成测试,如使用JUnit和Mockito测试Controller和Service的功能,以及数据库操作的正确性。 通过【SpringMvcMybatis3Demo】项目,开发者不仅可以学习到如何配置和使用...

    使用mockito玩转junit test

    Mockito则是一个强大的模拟框架,它允许我们在测试中创建和配置模拟对象,以便隔离被测试代码并专注于测试单个行为。本教程将深入探讨如何使用Mockito与JUnit结合,来提升我们的测试能力。 首先,了解Mockito的基本...

    Spring MVC与MYBatis企业应用实战.pdf

    - 单元测试:使用JUnit和Mockito测试Controller、Service和DAO层的功能。 总之,《Spring MVC与MYBatis企业应用实战》将引导读者深入理解这两种技术的结合,提供实际项目中的解决方案,帮助开发者在企业级应用开发...

    SpringBoot 多模块Dao层单元测试

    在Java和Spring Boot环境中,我们可以使用JUnit框架来进行单元测试,同时结合Mockito等工具来模拟对象行为,以便专注于测试目标方法。 对于多模块的Spring Boot项目,每个模块可能包含不同的组件,如Service层、...

    SpringBoot 多模块 Serivce 层单元测试

    对于Spring Boot项目,通常会使用`spring-boot-starter-test`依赖,它包含了JUnit、Mockito、Spring Test等测试相关的库。在pom.xml或build.gradle中,确保这些测试依赖已经被引入。 2. **创建测试类**:测试类一般...

    springboot的测试类的maven依赖

    如果你需要测试Spring Boot的Web层,如Controller,可以添加`spring-boot-starter-web`到`test`作用域,以便在测试中使用HTTP客户端,如`MockMvc`。 ```xml <groupId>org.springframework.boot <artifactId>...

    Junit 测试

    在软件开发过程中,单元测试是确保代码质量的重要环节。JUnit 是Java编程语言中最广泛...在Spring MVC的环境中,JUnit和Mockito的结合使得对Controller的测试变得更加方便,帮助我们构建更稳定、可靠的Web应用程序。

    spring mvc的简单单元测试

    2. **Mockito**:Mockito是一个流行的Java模拟框架,用于创建和配置模拟对象,以隔离被测试代码。在Spring MVC中,我们可以模拟服务层或数据访问层,以便专注于控制器的逻辑测试。 3. **Spring Test**:Spring 提供...

    07. Spring Boot单元测试

    Mockito是一个流行的Java单元测试框架,它允许我们创建模拟对象来替代实际依赖,以便隔离被测试代码。在Spring Boot中,我们可以结合`@MockBean`或`@SpyBean`注解来创建模拟bean,确保测试只关注目标代码的行为,不...

    测试代码个人使用

    1. **Mockito**:一种流行的Java单元测试框架,常用来模拟复杂的依赖关系,使得测试更加简洁和独立。 2. **JUnit**:一个用于Java的单元测试框架,是编写测试用例的基础工具。 3. **Spring Test**:Spring框架提供...

    Struts2SpringUnitDemo单元测试

    在单元测试中,Spring的Mockito库可以用来模拟协作对象,以便隔离被测试的代码。 3. **单元测试**:单元测试是软件开发过程中的重要环节,它验证单个代码单元(如方法或类)的功能是否符合预期。JUnit是Java中最...

    Spring Boot中的单元测试.pdf

    这些库各有其作用,例如JUnit是Java应用的标准单元测试框架,Mockito则允许你模拟依赖对象的行为,以便在测试中控制外部系统的交互。 以下是一个典型的Spring Boot测试类的结构: ```java @RunWith(SpringRunner....

    常用测试用例

    1. **控制器测试**:测试Controller层的处理方法,确认HTTP请求能被正确地路由并返回期望的结果。可以使用MockMVC进行无服务器环境的测试,模拟HTTP请求并验证响应。 2. **服务层测试**:针对业务逻辑的服务进行...

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

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

    junit针对spring mvc三层测试

    测试Controller通常包括验证HTTP请求映射、模型属性绑定、以及视图的正确跳转。JUnit可以通过模拟HTTP请求和预期的响应来实现对Controller的单元测试。例如,我们可以创建一个MockMVC对象来模拟请求,并使用...

    构建微服务云原生应用——微服务测试设计和实践.pdf

    单元测试专注于单个服务内部的类或方法,如Domain、Service、Controller、Repository和Proxy,通常使用JUnit和Mockito进行模拟和内存数据库来隔离测试。集成测试则关注服务间的接口、交互和链路,可能涉及外部数据库...

    ssh_web开发测试程序学习笔记

    这一章节通常会深入讲解如何进行测试驱动开发(TDD),如何编写JUnit测试用例,以及如何使用Mockito等工具进行模拟测试,确保代码的质量和稳定性。 在SSH框架中,开发测试往往包括单元测试、集成测试和系统测试。...

    spring单元测试

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

Global site tag (gtag.js) - Google Analytics