zoukankan      html  css  js  c++  java
  • 2. 开启Mock的三种方式、深度Mook

    package lesson3;
    
    import common.Account;
    import common.AccountDao;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.mockito.Mockito;
    import org.mockito.runners.MockitoJUnitRunner;
    import static org.mockito.Mockito.mock;
    
    @RunWith(MockitoJUnitRunner.class)
    public class _1_MockByRunnerTest {
        @Test
        public void testMock() {
    //        AccountDao accountDao = mock(AccountDao.class);
            AccountDao accountDao = mock(AccountDao.class, Mockito.RETURNS_SMART_NULLS);
            Account account = accountDao.getAccount("x", "x");
            System.out.println(account);
        }
    }
    @RunWith(MockitoJUnitRunner.class)
    package lesson3;
    
    import common.Account;
    import common.AccountDao;
    import org.junit.Before;
    import org.junit.Test;
    import org.mockito.Answers;
    import org.mockito.Mock;
    import org.mockito.MockitoAnnotations;
    
    public class _2_MockByAnnotationTest {
        /**
         * set param on annotation, replace on mock() method
         */
        @Mock(answer = Answers.RETURNS_SMART_NULLS)
        private AccountDao accountDao;
    
        /**
         * replace @RunWith(MockitoJUnitRunner.class)
         */
        @Before
        public void init() {
            MockitoAnnotations.initMocks(this);
        }
    
        @Test
        public void testMock() {
            Account account = accountDao.getAccount("x", "x");
            System.out.println(account);
        }
    }
    MockitoAnnotations.initMocks(this)
    package lesson3;
    
    import common.Account;
    import common.AccountDao;
    import org.junit.Rule;
    import org.junit.Test;
    import org.mockito.Mock;
    import org.mockito.junit.MockitoJUnit;
    import org.mockito.junit.MockitoRule;
    
    public class _3_MockByRuleTest {
    
        @Rule
        public MockitoRule mockitoRule = MockitoJUnit.rule();
    
        @Mock
        AccountDao accountDao;
    
        @Test
        public void testMock() {
            Account account = accountDao.getAccount("x", "x");
            System.out.println(account);
        }
    }
    @Rule
    package lesson3;
    
    import org.junit.Assert;
    import org.junit.Before;
    import org.junit.Test;
    import org.mockito.Answers;
    import org.mockito.Mock;
    import org.mockito.MockitoAnnotations;
    
    public class _4_DeepMockTest {
        @Before
        public void init() {
            MockitoAnnotations.initMocks(this);
        }
    
        /**
         * without "answer = Answers.RETURNS_DEEP_STUBS", lesson3.foo() will throw NullPointException
         */
        @Mock(answer = Answers.RETURNS_DEEP_STUBS)
        Lesson3Service lesson3Service;
    
        @Test
        public void testDeepMock() {
            lesson3Service.getLesson3().foo();
    
            Lesson3 lesson3 = lesson3Service.getLesson3();
            String foo = lesson3.foo();
            Assert.assertEquals(true, lesson3 != null);
            Assert.assertEquals(true, foo == null);
        }
    
    }
    DeepMock
    public class Lesson3 {
        public String foo() {
            throw new RuntimeException();
        }
    }
    Lesson3
    package lesson3;
    
    public class Lesson3Service {
        public Lesson3 getLesson3() {
            throw new RuntimeException();
        }
    }
    Lesson3Service
  • 相关阅读:
    消息中间件(一)MQ详解及四大MQ比较
    SIP协议
    PAT (Basic Level) Practice 1008 数组元素循环右移问题
    LeetCode-Algorithms 1. 两数之和
    PAT (Basic Level) Practice 1040 有几个PAT
    PAT (Basic Level) Practice 1023 组个最小数
    PAT (Basic Level) Practice 1021 个位数统计
    PAT (Basic Level) Practice 1007 素数对猜想
    PAT (Basic Level) Practice 1006 换个格式输出整数
    PAT (Basic Level) Practice 1004 成绩排名
  • 原文地址:https://www.cnblogs.com/yfzhou528/p/14024974.html
Copyright © 2011-2022 走看看