• 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

    带着疑问去思考,然后串联,进而归纳总结,不断追问自己,进行自我辩证,像侦查嫌疑案件一样看待技术问题,漆黑的街道,你我一起寻找线索,你就是技术界大侦探福尔摩斯
  • 相关阅读:
    WP7备注(13)(独立储存)
    WP7备注(14)(ContentPropertyAttribute)
    WP7备注(11)(页面跳转)
    WP7备注(10)(Accelerometer+GeoCoordinateWatcher+Map Service)
    WP7备注(12)(页面数据共享)
    WP7备注(18)(OpacityMask)
    WP7备注(15)(Resources)
    WP7备注(19)(ImageBrush|VideoBrush)
    WP7备注(17)(TextBlock和Inlines)
    vmware 复制其他电脑的linux无法上网问题
  • 原文地址:https://www.cnblogs.com/cainiao-Shun666/p/14804351.html
Copyright © 2020-2023  润新知