EasyMock實(shí)踐指南EasyMock是個(gè)mock框架,用于動(dòng)態(tài)產(chǎn)生mock對(duì)象,mock對(duì)象主要是用來模擬真實(shí)環(huán)境中的對(duì)象,原理上你應(yīng)該為每個(gè)被依賴的接口準(zhǔn)備mock對(duì)象,但那樣實(shí)在太麻煩,無端的會(huì)產(chǎn)生很多mock類,所以EasyMock派上用場(chǎng)了!注意EasyMock2.0不能為非接口產(chǎn)生mock對(duì)象
EashMock的使用模式 1)記錄 mockobj.someMethod(); 2) 如果該方法有返回值,那么必須使用 EasyMock.expectLastCall().andReturn(xxxx);(不一定非得用這句話,但一定要有返回 值) xxx為被mock對(duì)象的someMethod()方法的期望返回值
3)回放(用于激活mock對(duì)象) EasyMock.replay(mockobj);
實(shí)例如下:
package moxtv.central.service.impl;
import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set;
import junit.framework.TestCase; import moxtv.central.dao.UploadMachineDao; import moxtv.central.dao.UploadMachineJDBCDao; import moxtv.central.po.UploadServer;
import org.easymock.EasyMock;
/** * 上傳機(jī)管理測(cè)試集. * * @author weip * @time 2006-3-30 10:06:09 * */ public final class UploadMachineServiceTest extends TestCase {
/** * 要測(cè)試的類. */ private UploadMachineServiceImpl uploadMachineService;
/** * 測(cè)試對(duì)象依賴的對(duì)象 */ private UploadMachineDao mockUploadMachineDao;
/** * 測(cè)試對(duì)象依賴的對(duì)象 */ private UploadMachineJDBCDao mockUploadMachineJDBCDao;
/** * * @param name *
String */ public UploadMachineServiceTest(final String name) { super(name); }
/** * * @author weip * @time 2006-3-30 10:10:18 (non-Javadoc) * @see junit.framework.TestCase#setUp() * @throws Exception *
a * */ protected void setUp() throws Exception { super.setUp();
mockUploadMachineDao = (UploadMachineDao) EasyMock .createMock(UploadMachineDao.class);
mockUploadMachineJDBCDao = (UploadMachineJDBCDao) EasyMock .createMock(UploadMachineJDBCDao.class);
uploadMachineService = new UploadMachineServiceImpl();
uploadMachineService.setUploadMachineDao(mockUploadMachineDao);
uploadMachineService.setUploadMachineJDBCDao(mockUploadMachineJDBCDao);
}
/* * protected void tearDown() throws Exception { super.tearDown(); } */
/** * 測(cè)試登陸上傳機(jī)管理首頁. * * @author weip * @throws Exception *
a * @time 2006-3-30 10:20:14 */ public void testLoadMainPage() throws Exception {
UploadMachineVO vo = new UploadMachineVO ();
mockUploadMachineDao.query(vo );
EasyMock.expectLastCall().andReturn(new ArrayList());
mockUploadMachineDao.getTotalMachineCount();
EasyMock.expectLastCall().andReturn(new Integer(6));
EasyMock.replay(mockUploadMachineDao);
Map map = uploadMachineService.loadMainPage(vo );
assertNotNull(map);
assertNotNull(map.get("list"));
List list = (List) map.get("list");
assertEquals(0, list.size());
Integer sum = (Integer) map.get("sum");
assertNotNull(sum);
assertEquals(6, sum.intValue());
}
/** * 測(cè)試獲取上傳機(jī)詳情. * * @author weip * @throws Exception *
a * @time 2006-3-30 11:14:33 */ public void testGetMachine() throws Exception {
int serverId = 1;
mockUploadMachineDao.getMachine(serverId);
UploadServer us = createUploadServer();
EasyMock.expectLastCall().andReturn(us);
EasyMock.replay(mockUploadMachineDao);
UploadServer machine = uploadMachineService.getMachine(serverId);
assertEquals(1, machine.getId().intValue());
}
/** * 測(cè)試添加上傳機(jī). * * @author weip * @throws Exception *
a * @time 2006-3-30 10:09:42 */ public void testAddMachine() throws Exception {
UploadServer server = createUploadServer();
mockUploadMachineDao.addMachine(server);
EasyMock.replay(mockUploadMachineDao);
uploadMachineService.addMachine(server);
EasyMock.verify(mockUploadMachineDao);
}
/** * 測(cè)試刪除上傳機(jī). * * @author weip * @throws Exception *
a * @time 2006-3-30 10:55:28 * */ public void testDeleteMachines() throws Exception {
int[] serverids = new int[] {1 };
mockUploadMachineJDBCDao.deleteMachines(serverids);
EasyMock.replay(mockUploadMachineJDBCDao);
uploadMachineService.deleteMachines(serverids);
EasyMock.verify(mockUploadMachineJDBCDao);
}
/** * 測(cè)試修改上傳機(jī). * * @author weip * @throws Exception *
a * @time 2006-3-30 11:10:48 */ public void testUpdateMachine() throws Exception {
mockUploadMachineDao.getMachine(1);
UploadServer destus = createUploadServer();
EasyMock.expectLastCall().andReturn(destus);
EasyMock.replay(mockUploadMachineDao);
UploadServer srcus = createUploadServer();
uploadMachineService.updateMachine(srcus);
EasyMock.verify(mockUploadMachineDao);
}
/** * @author weip * @time 2006-4-7 9:12:09 * @return UploadServer */ private UploadServer createUploadServer() { UploadServer us = new UploadServer(new Integer(1)); Set set = new HashSet(); us.setDiskSet(set); return us; }
|
|
|