`
MauerSu
  • 浏览: 515502 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

使用Spring+Junit+Mockito做代码自测

 
阅读更多

源:https://blog.csdn.net/z199172177/article/details/79731952

评:

重构代码时一套完善的测试工作能给我们莫大的帮助,下面时我使用Mockito做的Demo,目的是替换掉Dubbo 的相关接口。供不熟悉Mockito 的同学做参考。 

 

junit:junit:4.11 

org.springframework:spring-test:3.2.4.RELEASE 

org.mockito:mockito-all:1.10.19 

jdk1.8

 

BaseTest

 import org.junit.Assert;

import org.junit.Before;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.mockito.MockitoAnnotations;

import org.springframework.test.context.ContextConfiguration;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

 

@ContextConfiguration(locations = {"classpath:spring/application.xml"})

@RunWith(SpringJUnit4ClassRunner.class)

public class BaseTest {

    @Before

    public void setup() {

        /** 如果同时需要注入和mock注入,SpringJUnit4ClassRunner的前提下,注入mock */

        MockitoAnnotations.initMocks(this);

    }

 

    @Test

    public void test() {

        Assert.assertEquals(1, 1);

    }

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

MockTestDemo

import cn.idongjia.makalu.biz.PostBO;

import cn.idongjia.makalu.domain.post.MakaluUser;

import cn.idongjia.makalu.manager.ClanManager;

import cn.idongjia.makalu.pojo.post.Post;

import cn.idongjia.makalu.repo.PostRepo;

import cn.idongjia.makalu.service.PostService;

import com.google.gson.Gson;

import com.google.gson.GsonBuilder;

import org.junit.Test;

import org.mockito.InjectMocks;

import org.mockito.Mock;

import org.mockito.Mockito;

import org.mockito.Spy;

 

import javax.annotation.Resource;

import java.util.Optional;

 

/*

 * service 被标记了 @InjectMocks , 在 setup 方法中 执行 MockitoAnnotations.initMocks(this); 的时候,会将标记了

 * @Mock或 @Spy 的属性注入到 service 中。

 * 如果是 @Mock, 那就是通常的方式,service里面的provider完全被Mock实例替换,所有的调用都是针对Mock生成类的。

 * 如果是 @Autowired 加 @Spy , 那么对于定制了返回值的会调用 Mock实例,否则会调用真实注入的属性。

 */

public class MockTestDemo extends BaseTest{

 

    @InjectMocks

    @Resource

    PostService postService;

 

    @InjectMocks

    @Spy

    @Resource

    private PostBO postBO;//注入到postService 中

 

    @InjectMocks

    @Spy

    @Resource

    private PostRepo postRepo;//注入到postRepo 中

 

    //Dubbo接口

    @Mock

    private ClanManager clanManager;//注入到postRepo 中

 

    @Test

    public void test() {

        System.out.println("======***************");

        /**

         * 构造一个自己的对象。

         */

        User mu = new User();

        mu.setUsername("zzz");

 

        Optional<User> user = Optional.of(mu);

 

        // 设置模拟对象的返回预期值

        Mockito.when(clanManager.takeUser(21L)).thenReturn(user);

 

        Post post = this.postService.get(5L);

        System.out.println(String.format("使用mock后的结果:%s", post.getUsername()));//修改后的结果值

        System.out.println("======***************");

    }

分享到:
评论

相关推荐

    基于Springboot+Junit+Mockito做单元测试的示例

    基于Springboot+Junit+Mockito做单元测试的示例 本文将从多个角度详细介绍如何使用Springboot、Junit和Mockito进行单元测试,并以实例代码演示。以下是本文的知识点总结: 一、单元测试的重要性 单元测试是软件...

    Spring+JUnit4 +Ant测试报告

    在实际项目中,可能还需要考虑更多细节,例如使用Mockito进行模拟对象(Mock Objects)以隔离被测试代码,或者使用@Test注解的expected属性来测试预期异常。此外,Spring的TestContext框架可以进一步简化测试环境的...

    StringBoot+Junit测试

    在实际的项目中,我们可能还需要配合使用其他的测试工具和库,例如Mockito用于模拟对象,Hamcrest或AssertJ用于增强断言功能,或者使用Spring Boot的`@SpringBootTest(webEnvironment = SpringBootTest....

    spring MVC junit 单元测试(controller)

    1. **配置测试环境**:引入Spring Test和JUnit相关的依赖,创建一个继承自`AbstractJUnit4SpringContextTests`或`SpringRunner`的测试类。在测试类上使用`@RunWith(SpringRunner.class)`注解启用Spring测试支持,并...

    综合spring mvc + spring + hibernate + bootstrap开发图书管理系统

    5. **单元测试与集成测试**:利用JUnit和Mockito等工具进行测试,确保代码质量。 6. **缓存机制**:如使用Redis进行数据缓存,减少数据库压力。 7. **任务调度**:使用Quartz或Spring Task进行定时任务,如自动提醒...

    spring3 junit 测试 + word

    - **@RunWith(SpringJUnit4ClassRunner.class)**:这个注解将JUnit测试类与Spring TestContext框架关联起来,使Spring能够管理测试环境。 - **@ContextConfiguration**:此注解用于指定测试所需的配置文件,Spring...

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

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

    springmvc+mybatis+maven+junit实现网页的增删查改

    在本文中,我们将深入探讨如何使用Spring MVC、MyBatis、Maven和JUnit这四大核心技术来构建一个功能完备的Web应用程序,实现数据的增、删、查、改(CRUD)操作。Spring MVC作为Spring框架的一部分,是用于构建Web...

    spring junit

    总结来说,“spring junit”涉及到的是在Spring框架下使用JUnit进行单元测试的方法和技术,这包括如何配置测试环境、注入依赖、模拟对象、管理事务等,这些都是保证代码质量和可维护性不可或缺的实践。而与MyBatis的...

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

    最后,压缩包中的"Testing"文件可能包含了相关的测试代码示例,包括TestNG测试类、Mockito模拟对象的定义以及Spring的配置文件。通过分析这些代码,读者可以更好地理解如何将这些技术结合起来进行高效的集成测试。 ...

    day38 20-Spring与Junit整合

    3. **Mockito和Spring Boot测试**:在Spring Boot项目中,经常使用Mockito库来创建mock对象,隔离被测试代码的依赖。`@MockBean`和`@SpyBean`注解可以在Spring应用上下文中创建mock对象或部分模拟对象。 4. **@...

    spring+jpa+全局异常+单元测试

    对于Spring和JPA的应用,我们可以使用JUnit和Mockito进行单元测试。JUnit是Java的单元测试框架,Mockito则用于模拟协作对象,使得测试更加隔离。Spring Boot提供了一个测试框架,允许我们轻松地创建和配置测试环境,...

    Spring整合Junit框架进行单元测试Demo

    接下来,我们要创建一个测试类,该类需要继承Spring的`AbstractJUnit4SpringContextTests`或`SpringJUnit4ClassRunner`。前者适用于Spring 3.x,后者适用于Spring 4.x及更高版本。这些基类会帮助我们加载Spring上...

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

    综上所述,"单元测试案例junit +spring mvc +springboot"涉及的是使用JUnit进行单元测试,结合Spring MVC和Spring Boot的特点,对服务端代码进行详尽的验证,确保代码的稳定性和可靠性。通过合理的测试策略和工具,...

    轻量级Java+EE企业应用实战——Struts+2+Spring+Hibernate整合开发电子书3.pdf

    7. 整合测试:介绍如何使用JUnit、Mockito等工具对整合后的系统进行单元测试和集成测试。 由于源码并未随电子书一同提供,读者可能需要自行实践书中所讲的案例,以加深理解和掌握这些技术。通过学习这本书,开发者...

    junit测试spring,hibernate的dao层代码

    将 `JUnit` 与 `Spring`、`Hibernate` 结合使用,可以对 `DAO(Data Access Object)` 层进行有效的测试,确保数据访问逻辑的正确性。 首先,`DAO` 层是业务逻辑和数据库操作之间的隔离层,通常包含了增删改查等...

    Spring+SpringMVC+MyBatis整合工程完整实例及实现用户登录功能

    7. **测试**:在项目中,单元测试和集成测试是非常重要的,可以使用JUnit、Mockito等工具对服务层和控制层进行测试,确保功能的正确性。 8. **部署与运行**:项目完成后,通常打包成WAR文件部署到Tomcat、Jetty等...

    spring整合单元测试Junit开发包

    通过Mockito,你可以创建和配置模拟对象,以便在测试中隔离被测代码,避免依赖外部服务或数据库。 2. **ApplicationContext**: `spring-test`提供了`@ContextConfiguration`注解,允许你在测试类上声明配置文件的...

    spring测试示例代码

    测试类中的方法通常使用JUnit的`@Test`注解,以及Spring提供的断言库,如`AssertJ`或`Mockito`来验证预期行为: ```java @RunWith(SpringRunner.class) @SpringBootTest(classes = TestConfig.class) public class ...

    mybatis+spring+springtest

    3. **Spring Test**:使用@RunWith(SpringJUnit4ClassRunner.class)注解标记测试类,表明这是一个Spring测试。通过@ContextConfiguration注解指定上下文配置文件,Spring Test会加载这个配置文件,初始化应用上下文...

Global site tag (gtag.js) - Google Analytics