JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java Tools  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 使用EasyMock测试DAO程序时,如何判断查询成功了?
jiangshachina

Hi, Java!



發文: 565
積分: 1
於 2008-06-16 10:38 user profilesend a private message to usersend email to jiangshachinareply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
有如下的Unit Test程序,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import junit.framework.TestCase;
import org.easymock.MockControl;
import org.jstockchart.data.candle.dao.CandleDataDao;
import org.jstockchart.data.candle.dao.CandleDataDaoDb4o;
import org.jstockchart.data.candle.model.CandleData;
 
import com.db4o.ObjectContainer;
import com.db4o.ObjectSet;
 
public class CandleDataItemDaoDb4oTest extends TestCase {
 
  // ObjectContainer就是db4o的数据库,用它来存储对象。
  private ObjectContainer mockDb = null;
 
  // ObjectSet是查询之后的对象集,类似于JDBC中的ResultSet;
  // ObjectSet同时继承了List与Iterator接口。
  private ObjectSet mockObjectSet = null;
 
  private MockControl controlDb = null;
 
  private MockControl controlObjectSet = null;
 
  // CandleData是一个域对象,就是要存储它的实例。
  private CandleData candle = null;
 
  // CandleDataDao是CandleData的DAO接口
  private CandleDataDao candleDataDao = null;
 
  public void setUp() {
    controlDb = MockControl.createControl(ObjectContainer.class);
    controlObjectSet = MockControl.createControl(ObjectSet.class);
    mockDb = (ObjectContainer) controlDb.getMock();
    mockObjectSet = (ObjectSet) controlObjectSet.getMock();
 
    // CandleDataDaoDb4o是CandleDataDao接口的db4o实现,它实际上是使用ObjectContainer的实例进行数据库操作。
    candleDataDao = new CandleDataDaoDb4o(mockDb);
 
    // 新建域对象CandleData的一个实例。
    candle = new CandleData("0001", "STK");
  }
 
  public void testGetCandleDataByTemplet() {
    // 通过DAO向数据库(ObjectContainer)中存储一个CandleData对象,
    // 实际上是使用ObjectContainer.store()方法。
    candleDataDao.saveCandleData(candle);
    controlDb.setVoidCallable(1);
 
    // 将candle对象作为一个模板,通过DAO查询数据库,会得到一个ObjectSet实例。
    candleDataDao.getCandleDataByTemplate(candle);
    controlDb.setReturnValue(mockObjectSet);
 
    // 从ObjectSet中获取先前插入的对象(candle)
    // 因为ObjectSet是一个List,所以可以用index直接get一个对象。
    mockObjectSet.get(0);
    controlObjectSet.setReturnValue(candle);
 
    controlDb.replay();
 
    candleDataDao.saveCandleData(candle);
    assertEquals(candleDataDao.getCandleDataByTemplate(candle),
        mockObjectSet);
    assertEquals(candle, mockObjectSet.get(0));  // shotpoint
  }
 
  public void tearDown() {
    controlDb.verify();
  }
}

执行之后,会在shotpoint处报错误,因为"mockObjectSet.get(0)"返回的值为null,而期望得到candle对象。
"mockObjectSet.get(0)"得到的对象确实是为null。

我对EasyMock的原理还没理解好,测试的方法可能不对。
希望大家能够解惑,谢谢!


reply to postreply to post
a cup of Java, cheers!
同是Java爱好者,相逢何必曾相识!
話題樹型展開
人氣 標題 作者 字數 發文時間
2594 使用EasyMock测试DAO程序时,如何判断查询成功了? jiangshachina 2267 2008-06-16 10:38
2111 Re:使用EasyMock测试DAO程序时,如何判断查询成功了? koji 156 2008-06-16 11:30
2258 Re:使用EasyMock测试DAO程序时,如何判断查询成功了? jiangshachina 1667 2008-06-16 12:11
2128 Re:使用EasyMock测试DAO程序时,如何判断查询成功了? koji 461 2008-06-16 12:20
2113 Re:使用EasyMock测试DAO程序时,如何判断查询成功了? jiangshachina 1103 2008-06-16 13:23
2039 Re:使用EasyMock测试DAO程序时,如何判断查询成功了? jiangshachina 908 2008-06-17 09:34
2000 Re:使用EasyMock测试DAO程序时,如何判断查询成功了? koji 149 2008-06-17 10:19
2068 Re:使用EasyMock测试DAO程序时,如何判断查询成功了? jiangshachina 395 2008-06-18 09:34
2098 Re:使用EasyMock测试DAO程序时,如何判断查询成功了? koji 749 2008-06-18 09:44
2000 Re:使用EasyMock测试DAO程序时,如何判断查询成功了? jiangshachina 1556 2008-06-18 10:20
2116 Re:使用EasyMock测试DAO程序时,如何判断查询成功了? koji 426 2008-06-18 10:31
2152 Re:使用EasyMock测试DAO程序时,如何判断查询成功了? jiangshachina 69 2008-06-18 10:45
1946 Re:使用EasyMock测试DAO程序时,如何判断查询成功了? koji 174 2008-06-18 10:56
1928 Re:使用EasyMock测试DAO程序时,如何判断查询成功了? jiangshachina 6 2008-06-18 11:02
1945 Re:使用EasyMock测试DAO程序时,如何判断查询成功了? koji 113 2008-06-18 12:16
2156 Re:使用EasyMock测试DAO程序时,如何判断查询成功了? jiangshachina 102 2008-06-18 12:29
» JWorld@TW »  Java Tools

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8