• 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
  • 相关阅读:
    day15—jQuery UI之widgets插件
    day14—jQuery UI 之dialog部件
    day13—CSS之导航栏
    day12—jQuery ui引入及初体验
    day11—前端学习之我不想看书
    struts2的action方法匹配以及通配符的使用
    Java中的static
    ActiveMQ的简单使用
    MS DOS 常用命令整理
    IntelliJ IDEA 中 Ctrl+Alt+Left/Right 失效
  • 原文地址:https://www.cnblogs.com/yfzhou528/p/14024974.html
Copyright © 2020-2023  润新知