spring的单元测试

如果spring 4.3.18这个版本的spring要使用junit,需要使用junit的junit-4.12之上的版本。使用这个版本junit的时
候需要引入hamcrest-all的jar包。之前的junit版本是不需要单独引入这个jar包的,因为之前版本把hamcrest-all的
jar包集成进来了,从4.12开始,该jar包不集成,需要单独的引入。
/**
* 使用junit进行单元测试
*/
public class JunitTest {
@Test
public void testSave(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
OrderService orderService = context.getBean(OrderService.class);
//保存订单
Orders order = new Orders();
order.setId(1L);
order.setCreate_user("张三");
order.setCreateDate(new Date().toString().substring(0,20));
order.setTotalMoney(9000D);
OrderItem oi1 = new OrderItem();
oi1.setId(1L);
oi1.setPname("洗衣机");
oi1.setPrice(900D);
oi1.setNum(1);
order.getOrderItems().add(oi1);
OrderItem oi2 = new OrderItem();
oi2.setId(2L);
oi2.setPname("微波炉");
oi2.setPrice(356D);
oi2.setNum(2);
order.getOrderItems().add(oi2);
//执行保存
orderService.save(order);
}
}
如果每次都这样做spring的测试,理论上是可的但是,但是每个单元测试的方法中都要有创建spring工厂
,从工厂中获取对象的方法。比较复杂,我们可以使用spring 单元测试功能,来解决这个问题:
如果要使用spring的单元测试,需要先引入spring 单元测试的jar包:
/**
* 使用junit进行单元测试
*/
//指定在单元测试启动的时候创建spring的工厂类对象
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
//RunWith的value属性指定以spring test的SpringJUnit4ClassRunner作为启动类
//如果不指定启动类,默认启用的junit中的默认启动类
@RunWith(value = SpringJUnit4ClassRunner.class)
public class JunitTest {
@Autowired
private OrderService orderService;
@Test
public void testSave(){
// ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
// OrderService orderService = context.getBean(OrderService.class);
//保存订单
Orders order = new Orders();
order.setId(1L);
order.setCreate_user("张三");
order.setCreateDate(new Date().toString().substring(0,20));
order.setTotalMoney(9000D);
OrderItem oi1 = new OrderItem();
oi1.setId(1L);
oi1.setPname("洗衣机");
oi1.setPrice(900D);
oi1.setNum(1);
order.getOrderItems().add(oi1);
OrderItem oi2 = new OrderItem();
oi2.setId(2L);
oi2.setPname("微波炉");
oi2.setPrice(356D);
oi2.setNum(2);
order.getOrderItems().add(oi2);
//执行保存
orderService.save(order);
}
}
原文地址:https://www.cnblogs.com/duguangming/p/10922693.html