- 纯粹 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)
@Transactional
public 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>