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
  • 相关阅读:
    第七章 心得体会
    第六章心得体会
    第五章心得体会
    学习第四章Android移植环境搭建心得体会
    学习Android移植平台工具介绍的心得体会
    第二章安卓系统与嵌入式开发的心得体会
    学习第一章 Android系统的编译和移植实例后的心得体会
    嵌入式Linux的调试技术
    让开发板发出声音:蜂鸣器驱动
    硬件抽象层:HAL
  • 原文地址:https://www.cnblogs.com/yfzhou528/p/14024974.html
Copyright © 2011-2022 走看看