使用场景:对于调用其它类中的方法,但是还没有编写完,使用easymock进行单元测试,它提供这些没有编写完的代码期待的默认值。
使用步骤:
step1:
pom引入:
1 <dependency> 2 <groupId>org.easymock</groupId> 3 <artifactId>easymock</artifactId> 4 <version>3.2</version> 5 </dependency> 6 <dependency> 7 <groupId>org.easymock</groupId> 8 <artifactId>easymockclassextension</artifactId> 9 <version>3.2</version> 10 </dependency> 11 <dependency> 12 <groupId>org.easymock</groupId> 13 <artifactId>com.springsource.easymockclassextension</artifactId> 14 <version>3.2</version> 15 </dependency>
2、使用easymock中的方法编写单元测试
第一,创建mocks的类
需要注意的是:一般使用EasyMock.createMock创建mock对象,但是一些对象需要set一些值,这时候我们可以使用EasyMock.createNiceMock
第二,开始录制
第三,mock回放
需要注意的是:只能回放用mock创建的对象,比如new出来的对象就不能回放;
第四,使用
测试单元:
1 /** 2 * 使用easymock测试GetTotalAmount 3 * @throws ParseException 4 */ 5 @Test 6 public void testGetTotalAmount() throws ParseException { 7 Reconciliation reconciliation = EasyMock 8 .createMock(Reconciliation.class); 9 Date endTime = new Date(); 10 Date startTime = new Date(); 11 12 Calendar calendar = Calendar.getInstance(); 13 calendar.setTime(endTime); 14 calendar.add(Calendar.DATE, -1); 15 startTime = calendar.getTime(); 16 EasyMock.expect(reconciliation.getReconciliationStartTime()) 17 .andReturn(startTime); 18 // TODO 1 19 EasyMock.expectLastCall().anyTimes(); 20 EasyMock.expect(reconciliation.getReconciliationEndTime()) 21 .andReturn(endTime); 22 EasyMock.expectLastCall().anyTimes(); 23 // TODO 2 24 reconciliation.setReconciliationStartTime( 25 sdf.parse(reconciliationStartTimeFormat.format(startTime))); 26 EasyMock.expectLastCall().anyTimes(); 27 reconciliation.setReconciliationEndTime( 28 sdf.parse(reconciliationEndTimeFormat.format(endTime))); 29 EasyMock.expectLastCall().anyTimes(); 30 reconciliation.setStatus((byte) 1); 31 EasyMock.replay(reconciliation); 32 QueryParameters queryParameters = new QueryParameters(); 33 queryParameters.setPage(1); 34 queryParameters.setRows(PAGESIZE); 35 ModelMap model = EasyMock.createMock(ModelMap.class); 36 // TODO 3 37 model.clear(); 38 39 EasyMock.expect(model.addAttribute("totalAmount", new Double(0))) 40 .andReturn(model); 41 EasyMock.expectLastCall().anyTimes(); 42 43 EasyMock.expect(model.addAttribute("total", new Integer(0))) 44 .andReturn(model); 45 EasyMock.expectLastCall().anyTimes(); 46 EasyMock.replay(model); 47 reconciliationController.getTotalAmount(reconciliation, queryParameters, 48 model); 49 } 50 /** 51 * 测试GetTotalAmount 52 * @throws ParseException 53 */ 54 @Test 55 public void testGetTotalAmount1() throws ParseException { 56 Reconciliation reconciliation = new Reconciliation(); 57 Date endTime = new Date(); 58 Date startTime = new Date(); 59 60 Calendar calendar = Calendar.getInstance(); 61 calendar.setTime(endTime); 62 calendar.add(Calendar.DATE, -1); 63 startTime = calendar.getTime(); 64 reconciliation.setReconciliationStartTime(startTime); 65 reconciliation.setReconciliationEndTime(endTime); 66 reconciliation.setStatus((byte) 1); 67 QueryParameters queryParameters = new QueryParameters(); 68 queryParameters.setPage(1); 69 queryParameters.setRows(PAGESIZE); 70 ModelMap model = new ModelMap(); 71 reconciliationController.getTotalAmount(reconciliation, queryParameters, 72 model); 73 }