zoukankan      html  css  js  c++  java
  • Mockito (九)

    Mockito @InjectMocks 注解注入 mock 对象

    mockito 会将 @Mock@Spy 修饰的对象自动注入到 @InjectMocks 修饰的对象中。

    注入方式有多种,mockito 会按照下面的顺序尝试注入:

    1. 构造函数注入
    2. 设值函数注入(set函数)
    3. 属性注入

    示例:

    准备两个业务类:

    package demo;
    
    import java.util.Random;
    
    public class HttpService {
    
        public int queryStatus() {
            // 发起网络请求,提取返回结果
            // 这里用随机数模拟结果
            return new Random().nextInt(2);
        }
    
    }
    package demo;
    
    public class ExampleService {
    
        private HttpService httpService;
    
        public String hello() {
            int status = httpService.queryStatus();
            if (status == 0) {
                return "你好";
            }
            else if (status == 1) {
                return "Hello";
            }
            else {
                return "未知状态";
            }
        }
    
    }

    编写测试类:

    import org.junit.Assert;
    import org.junit.Test;
    import org.mockito.InjectMocks;
    import org.mockito.Mock;
    import org.mockito.MockitoAnnotations;
    
    import static org.mockito.Mockito.when;
    
    
    public class ExampleServiceTest {
    
        @Mock
        private HttpService httpService;
    
        @InjectMocks
        private ExampleService exampleService = new ExampleService(); // 会将 httpService 注入进去
    
        @Test
        public void test01() {
    
            MockitoAnnotations.initMocks(this);
    
            when(httpService.queryStatus()).thenReturn(0);
    
            Assert.assertEquals("你好", exampleService.hello());
    
        }
    
    }

    转载:https://www.letianbiji.com/java-mockito/mockito-@injectmocks.html

    带着疑问去思考,然后串联,进而归纳总结,不断追问自己,进行自我辩证,像侦查嫌疑案件一样看待技术问题,漆黑的街道,你我一起寻找线索,你就是技术界大侦探福尔摩斯
  • 相关阅读:
    【转】程序员杂志:2011程序员薪资调查报告
    过滤HTML格式
    学习ASP.NET中的细节问题
    自己写的一些类代码
    "rs.open sql,conn,1,3 "的1,3的用处
    无须重装 Windows常遇问题通用解决方法
    Vista Beta下载
    asp学习
    SharePoint 和RMS装在同一台机器上可以么?
    介绍SharePoint与RMS集成的两篇重磅文章
  • 原文地址:https://www.cnblogs.com/cainiao-Shun666/p/14805618.html
Copyright © 2011-2022 走看看