1. 程式人生 > >IntellIj 在SSH框架下做Junit測試單元

IntellIj 在SSH框架下做Junit測試單元

Junit單元測試

  1. 專案中引入junit元件包,Junit必須使用Spring框架附帶的版本,自行從Junit官方網站下載的junit不一定可以使用。
  2. 父類定義為AbstractJUnit4SpringContextTests
  3. 幾個Annonation
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations={“/classpath:application-context.xml”})
    @Autowired或者@Resource
    @Test
package com.redis.test;

import
javax.annotation.Resource; import com.redis.bean.User; import com.redis.dao.BaseDAO; import org.apache.log4j.Logger; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import
org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.transaction.TransactionConfiguration; import org.springframework.transaction.annotation.Transactional; @Transactional @TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true
) @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={"classpath:application-context.xml"}) public class TestR { @Resource private SessionFactory sessionFactory; @Resource private BaseDAO dao; private Logger logger=Logger.getLogger(getClass()); @Test public void test1(){ //assert failure Boolean b=true; Assert.assertFalse(b); } @Test public void test2(){ //assert success String str="test"; Assert.assertNotNull(str); } /** * 通過sessionFactory獲取User類ID為1的使用者 * @param * @return */ @Test public void findById() { Session session=this.sessionFactory.openSession(); try { User user=(User)session.get(User.class, 1); logger.debug("ID: " + user.getUserId() + " Name:" + user.getUserName()); Assert.assertNotNull(user.getUserName()); } catch (Exception e) { e.printStackTrace(); }finally { session.close(); } } /** * 測試findById方法 */ @Test public void test3() { User user=(User)dao.findById(User.class,2); logger.debug("ID: " + user.getUserId() + " Name:" + user.getUserName()); Assert.assertNotNull(user.getUserName()); } }

開始單元測試的方法:
滑鼠移動到需要測試的方法名上,右擊選擇 Run’test1()’ 或者 Debug’test1()’即可。
這裡寫圖片描述
很明顯test1斷言不成功,在IntelliJ 上顯示為:
這裡寫圖片描述
列條為紅色說明斷言失敗,即方法錯誤。
方法test2()、test3()及 findById()斷言成功,顯示如下:
這裡寫圖片描述
想知道test3()方法中測試了什麼,可以從上圖中hibernate列印的sql發現,並且也debug出了我要求的資訊。
補充:User類只有自增的user_id和string的user_name兩個屬性,對應資料庫中的user表 。測試方法命名不規範,敬請諒解。