整合Spring+JPA的Junit测试笔记

@ContextConfiguration(locations={"classpath:applicationContext.xml"})
@RunWith(SpringJUnit4ClassRunner.class) 
@Transactional
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false)

public class JpaTest {

	@Autowired
	private IUserService userService;
	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
		System.out.println("测试开始!!!!");
//		ApplicationContext ctx = 
//				  new ClassPathXmlApplicationContext("applicationContext-configuration.xml");
//		System.out.println("ApplicationName = "+ctx.getApplicationName()+"count = "+ctx.getBeanDefinitionCount()+"displayName = "+ctx.getDisplayName());
	}

	@AfterClass
	public static void tearDownAfterClass() throws Exception {
		System.out.println("测试结束!!!");
	}

//	  @Test public void createTable(){  
//	        //可以验证生成表是否正确  
//		  System.out.println("aaaa");
//	        EntityManagerFactory factory = Persistence.createEntityManagerFactory("taoke");  
//	        factory.close();  
//	    }
	
	@Test
	public void save(){
		System.out.println("bbbb");
//		EntityManagerFactory emf = Persistence.createEntityManagerFactory("taoke");
//		EntityManager em = emf.createEntityManager();
//		em.getTransaction().begin();
		User user = new User();
		user.setUserName("fyxiang");
		user.setPassword("123456789000");
		userService.save(user);
	
	}

}

Junit测试Spring+Jpa  注意以下几点:
1、首先当然要配置好spring+jpa的环境,加入相应的jar包,写好配置文件:applicationContext.xml,persistence.xml,其中persistence.xml要放在类加载路径下的META-INF文件夹下,即src/META-INA/persistence.xml
测试类的前面一定要加上
2、@RunWith(SpringJUnit4ClassRunner.class)  目的是让测试运行于Spring环境上,如果没有这句spring的注解等功能是无法实现的
即需要导入这个包   import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
3、@ContextConfiguration(locations={"classpath:applicationContext.xml"})作用是加载spring的配置文件
4、@Transactional  增删改是需要事务支持的
5、@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false)   
事务管理器的配置defaultRollback = false :数据会污染数据库,即数据会真正插入到数据库
defaultRollback = true :数据不会污染数据库,但是会真正插入到数据库,当表的id字段设置为自增,则可以看出,
虽然数据回滚了, 但是当你尝试不回滚新增数据到数据库的时候, 会发现ID不是连续的.所以并不是真正意义上的无污染
6、如果仅仅是用Junit测试JPA,则只需要配置persistence.xml即可(数据源神马的都在这里面配置),并手动创建实体管理器,即 
EntityManagerFactory factory = Persistence.createEntityManagerFactory("taoke");  
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
---CRUD操作----
 
em.getTransaction().commit();
em.close();
emf.close();

一点心得,有什么不对的望大神指正!谢谢!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值