對於以前常使用junit的程序員來說,肯定知道Junit4的好處。
當我們學習Spring時,如果我們想在測試方法中獲取Spring管理的對象,按照一般步驟,需要創建讀取Spring配置的對象,然後通過該對象獲得實體。
例:獲取Hibernate中的SessionFactory對象。如果我們有多個測試Hibernate的方法,按照普通方法:
ClassPathXmlApplicationContext cpxa = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
SessionFactory sessionFactory = (SessionFactory )cpxa.getBean("sessionFactory");
要在每個方法中都要寫上上面這段代碼才能獲取到SessionFactory工廠,想想都煩惱。
Spring想到了這一點,幫我們優化了使用方法,我們只要學會使用就可以:
-
1. 在測試類上使用註解:
-
// 每次執行此類中的測試方法時,都會爲我們自動創建Spring容器 @RunWith(SpringJUnit4ClassRunner.class) // 指定Spring配置文件的路徑 @ContextConfiguration("classpath:applicationContext.xml") public class Test { }
-
2. 創建對象引用屬性,使用註解注入屬性:
-
@Resource(name="sessionFactory") private SessionFactory sf;
-
這樣,我們在測試方法中用到該對象時,直接使用就可以,無需再手動獲取,如:
-
@Test public void testfun() { // 使用Spring創建的SessionFactory對象創建session Session session = sf.openSession(); Transaction tst = session.beginTransaction(); // 創建對象 TestMain tm = new TestMain(); tm.setName("test3"); // 持久化對象 session.save(tm); // 事務提交、關閉資源 tst.commit(); session.close(); }
這雖然看起來並不簡單多少,但是如果有很多測試方法都要用到該對象時,會減輕很大的代碼量。