純粹 junit 測試
package com.dada.test;import org.junit.Before;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.github.zhangkaitao.shiro.chapter16.dao.UserDao;import com.github.zhangkaitao.shiro.chapter16.entity.User;public class JunitUserDaoTest { UserDao userDao; @Before public void init() { System.out.println("載入 spring 設定檔"); ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-config.xml"); userDao = ctx.getBean(UserDao.class); } @Test public void testQuery() { User result = userDao.findOne(1l); System.out.println(result); }} Spring 測試【注意:這個基類除了需要設定 spring 設定檔之外,還需要繼承:AbstractJUnit4SpringContextTests類,否則的話是不能自動注入類的】
package com.dada.test;import org.junit.Test;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;import com.github.zhangkaitao.shiro.chapter16.dao.UserDao;import com.github.zhangkaitao.shiro.chapter16.entity.User;/** * 關鍵點:使用AbstractJUnit4SpringContextTests,可以直接注入Bean * 1、Dao定義時使用註解@Component("userDao") * 2、測試類別使用註解@ContextConfiguration("classpath:beans.xml") * 3、測試類別繼承AbstractJUnit4SpringContextTests * 4、測試類別直接注入UserDao * @Resource(name="userDao") * privateUserDaouserDao; * 5、測試方法直接調用注入的userDao的方法 * 需要commons-logging包 * */@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = { "classpath:spring/spring-context.xml" })// 這個註解可以做到復原操作過的資料(新增,修改,刪除都會復原,但是如果對錶進行了新增,那麼當前的最大的id值是無法復原的)@TransactionConfiguration(defaultRollback=true)@Transactionalpublic class SpringUserDaoTest extends AbstractJUnit4SpringContextTests { @javax.annotation.Resource UserDao userDao; @Test public void testQuery() { User user = userDao.findOne(1l); System.out.println(user); }}
注意:需要加入spring 對應的依賴才行
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.0.0.RELEASE</version> <scope>test</scope> </dependency>