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

    Mocktio 使用 mock 方法模拟类和接口

    org.mockito.Mockito 的 mock 方法可以模拟类和接口。

    mock 类:

    import org.junit.Assert;
    import org.junit.Test;
    import java.util.Random;
    
    import static org.mockito.Mockito.*;
    
    public class MockitoDemo {
    
        @Test
        public void test() {
            Random mockRandom = mock(Random.class);
            when(mockRandom.nextInt()).thenReturn(100);  // 指定调用 nextInt 方法时,永远返回 100
    
            Assert.assertEquals(100, mockRandom.nextInt());
            Assert.assertEquals(100, mockRandom.nextInt());
        }
    }

    注意,mock 对象的方法的返回值默认都是返回类型的默认值例如,返回类型是 int,默认返回值是 0;返回类型是一个类,默认返回值是 null。

    import org.junit.Assert;
    import org.junit.Test;
    import java.util.Random;
    
    import static org.mockito.Mockito.*;
    
    public class MockitoDemo {
    
        @Test
        public void test() {
            Random mockRandom = mock(Random.class);
    
            System.out.println( mockRandom.nextBoolean() );
            System.out.println( mockRandom.nextInt() );
            System.out.println( mockRandom.nextDouble() );
        }
    }

    运行 test 方法,输出:

    false
    0
    0.0

    mock 接口:

    import org.junit.Assert;
    import org.junit.Test;
    
    import java.util.List;
    
    import static org.mockito.Mockito.*;
    
    public class MockitoDemo {
    
    
        @Test
        public void test() {
            List mockList = mock(List.class);
    
            Assert.assertEquals(0, mockList.size());
            Assert.assertEquals(null, mockList.get(0));
    
            mockList.add("a");  // 调用 mock 对象的写方法,是没有效果的
    
            Assert.assertEquals(0, mockList.size());      // 没有指定 size() 方法返回值,这里结果是默认值
            Assert.assertEquals(null, mockList.get(0));   // 没有指定 get(0) 返回值,这里结果是默认值
    
            when(mockList.get(0)).thenReturn("a");          // 指定 get(0)时返回 a
    
            Assert.assertEquals(0, mockList.size());        // 没有指定 size() 方法返回值,这里结果是默认值
            Assert.assertEquals("a", mockList.get(0));      // 因为上面指定了 get(0) 返回 a,所以这里会返回 a
    
            Assert.assertEquals(null, mockList.get(1));     // 没有指定 get(1) 返回值,这里结果是默认值
        }
    }

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

    带着疑问去思考,然后串联,进而归纳总结,不断追问自己,进行自我辩证,像侦查嫌疑案件一样看待技术问题,漆黑的街道,你我一起寻找线索,你就是技术界大侦探福尔摩斯
  • 相关阅读:
    Python 荣登 TIOBE 2020 年度编程语言
    火了!开源的Python抢票神器,过年回家就看这一波了!
    教你怎么用 Python 自动整理文件
    来自程序员的圣诞节浪漫-用Python画一棵带音乐的雪夜圣诞树
    用Python 绘制一个只属于你自己的世界地图
    Python黑科技:暴力破解,你的密码真的安全么?
    小白必读!十大被低估的Python自带库!
    MyEclipse提示MyEclipse Trial Expired(试用期过),破解方法
    转发和重定向的区别
    request内置对象
  • 原文地址:https://www.cnblogs.com/cainiao-Shun666/p/14804351.html
Copyright © 2011-2022 走看看