躺在沙灘上的小豬

          快樂的每一天

          jmock!

          在上面篇文章,我們的測試代碼如下:

           1package com.martin.pdo;
           2
           3import org.springframework.context.ApplicationContext;
           4
           5import junit.framework.Assert;
           6import junit.framework.TestCase;
           7
           8public class UserTest extends TestCase {
           9
          10    public void testUser() {
          11        ApplicationContext context = JUnitTestHelper.getContext();
          12        User user = (User) context.getBean("user");
          13                User _u1 = new User();
          14        _u1.setName("martin xus");
          15        _u1.setSex('F');
          16        _u1.setAge(100);
          17        user.add(_u1);
          18
          19        Assert.assertNotNull(_u1.getId());
          20
          21        User _u2 = (User) user.loadByName("martin xus").get(0);
          22        Assert.assertEquals(_u1.getId(), _u2.getId());
          23
          24        user.remove(_u2);
          25        Assert.assertTrue(user.loadByName("martin xus").size() == 0);
          26    }

          27
          28}

          29


          而這些,必須要和spring&hibernate一起工作,必須保證數據庫操作正確,而我們需要的只是測試這個類的本身!
          有必要連hibernate,spring一起測試嗎?當然沒有,測試,只需要保證本代碼完成相應的功能,即可.

          那么就有必要更換測試方法:
          mock便是首選,在這里我們選擇了jmock (http://www.jmock.org)

           1package com.martin.mock;
           2
           3import org.jmock.Mock;
           4import org.jmock.MockObjectTestCase;
           5
           6import java.util.List;
           7
           8/**
           9 * @author martin.xus
          10 */

          11public class UserTest extends MockObjectTestCase {
          12
          13    public void testAdd() {
          14        Mock mock = mock(UserManager.class);
          15        User user = new User();
          16        mock.expects(once()).method("add").with(isA(User.class));
          17        UserManager manager = (UserManager) mock.proxy();
          18
          19        user.setManager(manager);
          20        user.add(new User());
          21        mock.verify();
          22    }

          23
          24    public void testLoadByName() {
          25        Mock mock = mock(UserManager.class);
          26        User user = new User();
          27
          28        mock.expects(once()).method("loadByName").with(isA(String.class)).will(returnValue(List.class));
          29        UserManager manager = (UserManager) mock.proxy();
          30
          31        user.setManager(manager);
          32        user.loadByName("martin");
          33        mock.verify();
          34    }

          35
          36    public void testRemove(){
          37        Mock mock = mock(UserManager.class);
          38        User user = new User();
          39
          40        mock.expects(once()).method("remove").with(isA(User.class));
          41        UserManager manager = (UserManager) mock.proxy();
          42
          43        user.setManager(manager);
          44        user.remove(user);
          45        mock.verify();   
          46    }

          47}

          ok,測試通過

          posted on 2005-09-22 21:18 martin xus 閱讀(237) 評論(0)  編輯  收藏 所屬分類: java

          主站蜘蛛池模板: 长治县| 马尔康县| 双流县| 襄汾县| 高州市| 中西区| 海淀区| 孟津县| 永和县| 高碑店市| 五大连池市| 夏河县| 富蕴县| 金川县| 灌阳县| 永年县| 新疆| 九寨沟县| 高安市| 曲松县| 玉环县| 武胜县| 油尖旺区| 龙泉市| 潼南县| 红河县| 天祝| 修水县| 长岛县| 璧山县| 江达县| 日土县| 安西县| 化州市| 田阳县| 丰县| 赞皇县| 巴青县| 中方县| 绥滨县| 湘西|