IntellIj 在SSH框架下做Junit測試單元
阿新 • • 發佈:2019-02-12
Junit單元測試
- 專案中引入junit元件包,Junit必須使用Spring框架附帶的版本,自行從Junit官方網站下載的junit不一定可以使用。
- 父類定義為AbstractJUnit4SpringContextTests
- 幾個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表 。測試方法命名不規範,敬請諒解。