<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Energy of Love  
    日歷
    <2011年11月>
    303112345
    6789101112
    13141516171819
    20212223242526
    27282930123
    45678910
    統計
    • 隨筆 - 70
    • 文章 - 0
    • 評論 - 80
    • 引用 - 0

    導航

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

     

    版權聲明:轉載時請以超鏈接形式標明文章原始出處和作者信息及本聲明
    http://ralf0131.blogbus.com/logs/55701639.html

    參考:http://www.javaeye.com/topic/14631
    關于JUnit4: http://www.ibm.com/developerworks/cn/java/j-junit4.html

    背景:
    如果在Hibernate層采用lazy=true的話,有的時候會拋出LazyInitializationException,這時一種解決辦法是用OpenSessionInViewFilter,但是如果通過main方法來運行一些測試程序,那么上述方法就沒有用武之地了。這里提供了一種方法,來達到實現和OpenSessionInViewFilter相同作用的目的。這里的應用場景是采用JUnit4來編寫測試用例。

    JUnit4的好處是:采用annotation來代替反射機制,不必寫死方法名.
    首先添加一個abstract class(AbstractBaseTestCase.class), 做一些準備性的工作:
    (可以看到@Before和@After兩個annotation的作用相當于setUp()和tearDown()方法,但是,顯然更靈活)

    package testcase;

    import org.hibernate.FlushMode;

    import org.hibernate.Session;

    import org.hibernate.SessionFactory;

    import org.junit.After;

    import org.junit.Before;

    import org.springframework.context.support.FileSystemXmlApplicationContext;

    import org.springframework.orm.hibernate3.SessionFactoryUtils;

    import org.springframework.orm.hibernate3.SessionHolder;

    import org.springframework.transaction.support.TransactionSynchronizationManager;

     

    /***

     * An abstract base class for TestCases.

     * All test cases should extend this class.

     */

    public class AbstractBaseTestCase {

     

        private SessionFactory sessionFactory;  

        private Session session;  

        protected FileSystemXmlApplicationContext dsContext;

        private String []configStr = {"/WebRoot/WEB-INF/applicationContext.xml"};  

    @Before

    public void openSession() throws Exception {

    dsContext = new FileSystemXmlApplicationContext(configStr);

            sessionFactory = (SessionFactory) dsContext.getBean("sessionFactory");  

            session = SessionFactoryUtils.getSession(sessionFactory, true);  

            session.setFlushMode(FlushMode.MANUAL);  

            TransactionSynchronizationManager.bindResource(sessionFactory, new SessionHolder(session)); 

    }

     

    @After

    public void closeSession() throws Exception {

    TransactionSynchronizationManager.unbindResource(sessionFactory);  

            SessionFactoryUtils.releaseSession(session, sessionFactory);  

    }

    }

    接下來繼承上述基類,實現測試邏輯:
    (注意import static用于引用某個類的靜態方法)
    (@Test注解表明該方法是一個測試方法)
    package testcase;
    import static org.junit.Assert.assertEquals;
    import static org.junit.Assert.fail;
    import org.junit.Before;
    import org.junit.Test;
    public class testCase1 extends AbstractBaseTestCase {
    private YourManager manager;
    @Before
    public void prepare(){
    manager = (YourManager)dsContext.getBean("YourManager");
    }
    @Test 
    public void test1(){
    try {
    String result = manager.do_sth();
    System.out.println(result);
    assertEquals(result, EXPECTED_RESULT);
    } catch (Exception e) {
    e.printStackTrace();
    fail("Exception thrown.");
    }
    }
    }
    posted on 2011-11-30 19:19 不高興 閱讀(2267) 評論(0)  編輯  收藏 所屬分類: Java
     
    Copyright © 不高興 Powered by: 博客園 模板提供:滬江博客
    主站蜘蛛池模板: 亚洲暴爽av人人爽日日碰| 亚洲精品福利网泷泽萝拉| 免费国产黄网站在线看| 国产自产拍精品视频免费看| 国产91在线|亚洲| 免费无码AV电影在线观看| 亚洲综合校园春色| 成人网站免费观看| 亚洲丁香婷婷综合久久| 国产成人精品免费直播| 日韩精品免费一线在线观看 | 午夜免费1000部| 亚洲卡一卡2卡三卡4麻豆| 91精品免费不卡在线观看| 亚洲av午夜精品无码专区| 成人免费无码大片A毛片抽搐| 蜜桃传媒一区二区亚洲AV| 亚洲国产成人久久综合野外| 特级毛片在线大全免费播放| 亚洲精品国产精品乱码视色| 99久久综合精品免费| 国产精品亚洲四区在线观看 | 亚洲va久久久噜噜噜久久天堂| 黄网站色视频免费在线观看的a站最新| 亚洲AV日韩AV永久无码免下载| 免费看h片的网站| 豆国产96在线|亚洲| 亚洲情综合五月天| 91情侣在线精品国产免费| 国产成人亚洲午夜电影| 亚洲av午夜成人片精品网站 | 亚洲妇女无套内射精| 超清首页国产亚洲丝袜| 亚洲视频在线免费看| 亚洲国产欧美国产综合一区 | 亚洲AV无码第一区二区三区| 久久久久久久免费视频| 国产日韩AV免费无码一区二区三区| 亚洲人成依人成综合网| 国产又长又粗又爽免费视频 | 亚洲日本va午夜中文字幕久久 |