MockitoAnnotationTest 单元测试

package com.yiautos.psf.order.service.impl;

import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.*;
import org.mockito.junit.MockitoJUnitRunner;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RunWith(MockitoJUnitRunner.class)
public class MockitoAnnotationTest {

    @Mock
    List<String> mockedList;

    @Test
    public void whenUseMockAnnotation_thenMockIsInjected() {
        mockedList.add("one");
        Mockito.verify(mockedList).add("one");
        Assert.assertEquals(0, mockedList.size());

        Mockito.when(mockedList.size()).thenReturn(100);
        Assert.assertEquals(100, mockedList.size());
    }

    @Spy
    List<String> spiedList = new ArrayList<String>();

    @Test
    public void whenUseSpyAnnotation_thenSpyIsInjected() {
        spiedList.add("one");
        spiedList.add("two");

        Mockito.verify(spiedList).add("one");
        Mockito.verify(spiedList).add("two");

        Assert.assertEquals(2, spiedList.size());

        Mockito.doReturn(100).when(spiedList).size();
        Assert.assertEquals(100, spiedList.size());
    }

    @Mock
    Map<String, String> wordMap;

    @InjectMocks
    MyDictionary dic = new MyDictionary();

    @Test
    public void whenUseInjectMocksAnnotation_thenCorrect() {
        Mockito.when(wordMap.get("aWord")).thenReturn("aMeaning");

        Assert.assertEquals("aMeaning", dic.getMeaning("aWord"));
    }

    @Mock HashMap<String, Integer> hashMap;
    @Captor ArgumentCaptor<String> keyCaptor;
    @Captor ArgumentCaptor<Integer> valueCaptor;

    @Test
    public void whenUseCaptorMocksAnnotation_thenCorrect() {
        hashMap.put("A", 10);

        Mockito.verify(hashMap).put(keyCaptor.capture(), valueCaptor.capture());

        Assert.assertEquals("A", keyCaptor.getValue());
        Assert.assertEquals(new Integer(10), valueCaptor.getValue());
    }

    public class MyDictionary {
        Map<String, String> wordMap;

        public MyDictionary() {
            wordMap = new HashMap<String, String>();
        }

        public void add(final String word, final String meaning) {
            wordMap.put(word, meaning);
        }

        public String getMeaning(final String word) {
            return wordMap.get(word);
        }
    }

}

 

posted @ 2022-04-18 11:13  八英里  阅读(39)  评论(0编辑  收藏  举报