TestContext 可以運行在 JUnit 3.8、JUnit 4.4、TestNG 等測試框架下。
Spring的版本2.5+JUnit4.4+log4j1.2.12
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"http://www.cnblogs.com/../applicationContext.xml","http://www.cnblogs.com/../daoContext.xml"})
@TransactionConfiguration(transactionManager="transactionManager")
@Transactional
public class KindDaoTest
{
@Autowired
KindDao kindDao;
@Test
@Rollback(false)
public void findAll()
{
}
}
該單元測試的特點:運用注釋,使得編寫測試更加簡單,以及可以設置是否回滾。
@RunWith(SpringJUnit4ClassRunner.class)
表示該測試用例是運用junit4進行測試,也可以換成其他測試框架
@TransactionConfiguration(transactionManager="transactionManager")為可選項,該項不會影響回滾的設置。
@ContextConfiguration(locations={"http://www.cnblogs.com/../applicationContext.xml","http://www.cnblogs.com/../daoContext.xml"})
該路徑的設置時相當於該單元測試所在的路徑,也可以用“classpath:xxx.xml”進行設置,該設置還有一個inheritLocations的屬性,默認為true,表示子類可以繼承該設置。
@Autowired
表示bean自動加載,而不用像之前的兩個類要添加一個set的方法。
@Test
表示該方法是測試用例
@Rollback(false)
表示該測試用例不回滾
問題:
1.報錯log4j:WARN No appenders could be found for logger (org.springframework.test.context.junit4.SpringJUnit4ClassRunner).
log4j:WARN Please initialize the log4j system properly.
解答:將log4j.properties文件放在/resource下面
2.log4j的版本必須在1.2.12以后
注意:
操作數據庫時,數據並沒有真正插入到數據庫中。
這是TestContext起的作用,調用事務返回了並沒有真正插入數據庫。