版权声明:本文为博主原创文章,未经博主允许不得转载。 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);
}