配置文件方式:
//替换junit的运行器,用spring整合的Junit组件运行相关方法
@RunWith(value=SpringJUnit4ClassRunner.class)
//指定创建容器需要的配置文件,并将当前类对象放入spring容器
@ContextConfiguration(value= {"classpath:beans.xml"})
public class CustomerServiceTest {
//只有将当前类对象放入到spring容器中,才能进行依赖注入,即先IOC再DI
@Resource(name="customerService")
private ICustomerService cs;
@Test
public void test1() {
cs.saveCustomer();
}
@Test
public void test2() {
cs.updateCustomer();
}
@Test
public void test3() {
cs.findCustomer();
}
@Test
public void test4() {
cs.deleteCustomer();
}
}
纯注解的测试类配置方式:
package cn.yew.service.test;
import javax.annotation.Resource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import cn.yew.config.SpringConfig;
import cn.yew.service.ICustomerService;
//替换junit的运行器
@RunWith(value=SpringJUnit4ClassRunner.class)
//指定创建容器需要的配置类
@ContextConfiguration(classes= {CustomerServiceTest.class})//创建spring容器
//以上两个注解是Junit和spring框架整合后用于标记测试类的
//以下两个注解是用于指定spring配置类用的
//配置类和测试类,可以是同一个类,也可以不是。
//配置当前类为spring入口配置类。
@Configuration//直接将运行测试类指定为配置类,不用另外指定spring配置类。
@ComponentScan(basePackages={"cn.yew.service"})
//替换junit的运行器
//@RunWith(value=SpringJUnit4ClassRunner.class)
创建容器需要的配置类
//@ContextConfiguration(classes= {SpringConfig.class})
public class CustomerServiceTest {
@Resource(name="customerService")
private ICustomerService cs;
@Test
public void test1() {
cs.saveCustomer();
}
@Test
public void test2() {
cs.updateCustomer();
}
@Test
public void test3() {
cs.findCustomer();
}
@Test
public void test4() {
cs.deleteCustomer();
}
}
spring-Junit组件和jpa注解联合使用:
@RunWith(SpringJUnit4ClassRunner.class)//替换Junit运行容器
@ContextConfiguration({"classpath:applicationContext.xml"})//指定spring配置文件,创建spring容器
public class StandardTeat {
@Autowired
private StandardDaoImpl standardDaoImpl;
//jpa和hibernate在进行增删改操作时,都需要开启事务,所以此处需要配置spring事务
@Test
@Transactional//该注解和@Test注解一起使用时,会自动回滚
@Rollback(false)//为了查看数据库效果,此处需要设置不回滚
public void test01() {
Standard standard = new Standard();
standard.setName("小明");
standardDaoImpl.save(standard);
}
}
spring整合jpa的dao层部分代码:
@Repository
public class StandardDaoImpl implements StandardDao{
//在spring容器中查询EntityManager的工厂对象,让工厂对象创建一个
//EntityManager对象,然后赋值给em,@Autowired:是在容器中直接找对象,
//该注解是找对象的工厂。
@PersistenceContext
private EntityManager em;//因为EntityManager在dao层用到,所以hibernate-entitymanager这个jar包导入到dao层
@Override
public void save(Standard standard) {
//保存数据到数据库。
em.persist(standard);
}
}
测试结果:
先获取序列的值,赋给对象,作为id,然后执行插入语句。