如果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); } }