网站建设十大品牌,南阳本地网络推广优化公司,乐清外贸网站建设,中国网站建设公司有哪些内容刚开始做网站的时候#xff0c;测试都是这样的#xff08;比如测试修改用户信息的表单逻辑#xff09;#xff1a;设置断点#xff0c;启动运行程序#xff0c;登陆#xff0c;点击点击点击然后进入到测试的页面#xff0c;输入测试数据#xff0c;进入断点…….。一个…刚开始做网站的时候测试都是这样的比如测试修改用户信息的表单逻辑设置断点启动运行程序登陆点击点击点击然后进入到测试的页面输入测试数据进入断点…….。一个大的程序启动又慢还要登陆还要输入那么多表单信息才进入到测试的那段代码我的内心几乎是崩溃的。那时就想要是测试web程序能像测试普通程序那样直接测试要测试的那段代码该多好。后来发现mock测试可以做到。
mock测试实例
新建一个maven项目加入junit和mockito的依赖。 dependencygroupIdorg.mockito/groupIdartifactIdmockito-all/artifactIdversion1.8.4/version/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion4.8.2/version/dependency
新建一个servlet类作为controller
public class StudentController extends HttpServlet{Overridepublic void doGet(HttpServletRequest request,HttpServletResponse response){String name request.getParameter(name);System.out.println(name);}Overridepublic void doPost(HttpServletRequest request,HttpServletResponse response){}}
接下来我们就要测试这个Servlet的doGet和doPost方法。新建一个Junit测试类如下
//这两个import要自己手写引进来
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.junit.Before;
import org.junit.Test;public class TestStudentController {private HttpServletRequest request;private HttpServletResponse response;private StudentController studentController;Beforepublic void setUp() throws Exception {request mock(HttpServletRequest.class);response mock(HttpServletResponse.class);when(request.getParameter(name)).thenReturn(123);}Testpublic void testDoGet() {studentController new StudentController();studentController.doGet(request, response);}Testpublic void testDoPost() {}}
分析一下上面的代码 首先要测试的doGet(request, response),我们发现doGet需要两个参数而且这两个参数是容器传进来的自己无法创建所以就模拟一个出来。如下
request mock(HttpServletRequest.class);
response mock(HttpServletResponse.class);
对象是模拟出来了但是对象的行为还没模拟出来。我们发现Servlet的doGet方法用到了request.getParameter(name),所以我们就给模拟对象增加这个模拟行为。如下
when(request.getParameter(name)).thenReturn(123);
每当模拟对象调用getParameter(name)方法时就返回一个值123就好像真的执行了request.getParameter(name)一样。
总而言之mock测试其实就一句话需要什么不能自己创建的就mock()出来然后用when()给它增加需要的模拟行为。
参考 1、Java Mocking入门—使用Mockito 2、源代码下载