躺在沙灘上的小豬

          快樂的每一天

          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 閱讀(240) 評論(0)  編輯  收藏 所屬分類: java

          主站蜘蛛池模板: 彭泽县| 诏安县| 来安县| 武隆县| 玉山县| 嘉峪关市| 桂平市| 桃园市| 滦平县| 常熟市| 兴山县| 武穴市| 翁源县| 安仁县| 红河县| 泸水县| 阳东县| 武穴市| 高邮市| 收藏| 崇左市| 寿光市| 凉山| 色达县| 靖安县| 藁城市| 衡南县| 牙克石市| 崇州市| 徐水县| 商河县| 固安县| 西林县| 永和县| 郑州市| 常德市| 盈江县| 五台县| 营口市| 铁力市| 梓潼县|