Mockito单元测试

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhengyong15984285623/article/details/60139412

Mockito单元测试

Maven依赖

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-all</artifactId>
    <version>2.0.2-beta</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-module-junit4</artifactId>
    <version>1.6.5</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-api-mockito</artifactId>
    <version>1.6.5</version>
    <scope>test</scope>
</dependency>

普通类mock

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.PrintWriter;

public class DataHandlerTest {

    @InjectMocks
    DataHandler                   dataHandler = new DataHandler();

    @Mock
    protected HttpServletRequest  request;

    @Mock
    protected HttpServletResponse response;

    @Before
    public void before() throws Exception {
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void testPrintString() throws Exception {
        JsonResult result = new JsonResult();
        Mockito.doNothing().doAnswer(new Answer() {

            @Override
            public Object answer(InvocationOnMock invocation) throws Throwable {
                return null;
            }
        }).when(response).setHeader("Content-Type", "application/json");

        String path = DataHandlerTest.class.getResource("/").getPath() + "dataHandler.txt";
        File file = new File(path);
        if (!file.exists()) {
            file.createNewFile();
        }
        PrintWriter writer = new PrintWriter(file);
        Mockito.when(response.getWriter()).thenReturn(writer);
        dataHandler.print(result);

        if (file != null && file.exists()) {
            file.delete();
        }
    }
}

静态类mock

@RunWith(PowerMockRunner.class)
@PrepareForTest(ThreadContext.class)
public class CartTest {


    @InjectMocks
    private Cart cart = new Cart();

    @Mock
    ThreadContext threadContext;

    @Mock
    protected HttpServletRequest request;

    @Mock
    protected HttpServletResponse response;

    @Before
    public void before() throws Exception { 
        MockitoAnnotations.initMocks(this);
        PowerMockito.mockStatic(ThreadContext.class);

        ThreadContext threadContext2 = new ThreadContext();
        threadContext2.setLoginId("123");

        //Mock当前用户信息 currentUser
        Mockito.when(ThreadContext.getCurrentUser()).thenReturn(threadContext2);

        //Mock response.setHeader方法
        Mockito.doAnswer(new Answer<Object>() {
            public Object answer(InvocationOnMock invocation) {
                Object[] args = invocation.getArguments();
                return "called with arguments: " + args;
            }
        }).when(response).setHeader(Mockito.anyString(),Mockito.anyString());

    }


   /** 
    * 
    * Method: screen(Context context) 
    * 
    */ 
    @Test
    public void test() throws Exception {
        Map<String, String> map = Maps.newHashMap();
        map.put("Login","test");
        Context context = new MappedContext();

        //Mock request中获取回调函数名的方法
        Mockito.when(request.getParameter(Mockito.any(String.class))).thenReturn("callback");
        cart.screen(context);

    }

猜你喜欢

转载自blog.csdn.net/zhengyong15984285623/article/details/60139412