spring测试junit事务管理及spring面向接口注入和实现类单独注入(无实现接口),实现类实现接口而实现类单独注入否则会报错。
1.根据日志分析,spring junit默认是自动回滚,不对数据库做任何的操作。
18:16:57.648 [main] DEBUG o.s.j.d.DataSourceTransactionManager - Switching JDBC Connection [net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@481d6644] to manual commit
18:16:57.649 [main] DEBUG o.s.t.c.t.TransactionalTestExecutionListener - No method-level @Rollback override: using default rollback [true] for test context [DefaultTestContext@4d95d2a2 testClass = TransDispatchingServiceTest, testInstance = com.autoyol.service.trans.TransDispatchingServiceTest@54b48b, testMethod = testCancelCauseNoSupport@TransDispatchingServiceTest, testException = [null], mergedContextConfiguration = [MergedContextConfiguration@3b088d51 testClass = TransDispatchingServiceTest, locations = '{classpath:conf/applicationContext.xml}', classes = '{}', contextInitializerClasses = '[]', activeProfiles = '{}', contextLoader = 'org.springframework.test.context.support.DelegatingSmartContextLoader', parent = [null]]].
18:16:57.649 [main] INFO o.s.t.c.t.TransactionalTestExecutionListener - Began transaction (6) for test context [DefaultTestContext@4d95d2a2 testClass = TransDispatchingServiceTest, testInstance = com.autoyol.service.trans.TransDispatchingServiceTest@54b48b, testMethod = testCancelCauseNoSupport@TransDispatchingServiceTest, testException = [null], mergedContextConfiguration = [MergedContextConfiguration@3b088d51 testClass = TransDispatchingServiceTest, locations = '{classpath:conf/applicationContext.xml}', classes = '{}', contextInitializerClasses = '[]', activeProfiles = '{}', contextLoader = 'org.springframework.test.context.support.DelegatingSmartContextLoader', parent = [null]]]; transaction manager [org.springframework.jdbc.datasource.DataSourceTransactionManager@491cceb4]; rollback [true]
2.事务配置和spring注入
package com.autoyol.service.trans; import java.util.Map; import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional; import com.autoyol.service.trans.impl.TransDispatchingServiceImpl; /**
* @author xxx
* @function
* @date 2016年4月23日
* @version
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:conf/applicationContext.xml")
@Transactional
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false)
public class TransDispatchingServiceTest {
@Autowired
private TransDispatchingServiceImpl transDispatchingServiceImpl; //无面向接口编程,单独的类。
// @Autowired
// @Qualifier("testtestddd")
// private TransDispatchingServiceImpl testtestddd; //要么单纯实现类,要么面向接口注入。 @service("testtestddd") // @Autowired
// private TransDispatchingService transDispatchingService; //面向接口编程 //
// @Autowired
// private TransDispatchingMapper transDispatchingMapper;
Long orderNo = 449230224061l;
Integer carNo = 431319914;
@Test
public void testAddCarSelectUpgrade(){
int i = transDispatchingServiceImpl.addCarSelectUpgrade(orderNo);
System.out.println("添加车辆升级条件i="+i);
} /*@Test
public void testA(){
Map<String,Object> reqMap = new HashMap<String,Object>();
reqMap.put("orderNo", orderNo);
reqMap.put("renterNo", 123);
reqMap.put("rentTime", 201611l);
reqMap.put("revertTime", 201612l);
reqMap.put("ownerNo", 456);
reqMap.put("carNo", carNo);
reqMap.put("rentAmt", 300);
reqMap.put("insurance", 300);
reqMap.put("renterSt", 21);
reqMap.put("ownereSt", 21); int i = transDispatchingMapper.addTransDispatchingInitData(reqMap);
System.out.println("i="+i);
}*/ @Test
public void testAddTransDispatchingInitData(){
int i = transDispatchingServiceImpl.addTransDispatchingInitData(orderNo, 123, 201611l, 201612l, 456, carNo, 300, 300, 21, 21);
System.out.println("添加调度初始化数据i="+i);
}
@Test
public void testUpdateTransDispatchingStatus(){
int i = transDispatchingServiceImpl.updateTransDispatchingStatus(orderNo, carNo, 2, null, 1);
System.out.println("修改调度状态i="+i);
}
@Test
public void testQueryTransDispatchingStatus(){
System.err.println("transDispatchingServiceImpl="+transDispatchingServiceImpl);
// System.err.println("transDispatchingService="+transDispatchingService);
Map map = transDispatchingServiceImpl.queryTransDispatchingStatus(orderNo, carNo);
System.err.println("查询当前的调度状态:map="+map);
}
@Test
public void testRefuseCauseNoSupport(){
int i = transDispatchingServiceImpl.refuseCauseNoSupport(orderNo, carNo);
System.out.println("调度原因i="+i);
}
@Test
public void testRefuseCauseLessTime(){
int i = transDispatchingServiceImpl.refuseCauseLessTime(orderNo, carNo);
System.out.println("调度原因i="+i);
}
@Test
public void testCancelCauseNoSupport(){
int i = transDispatchingServiceImpl.cancelCauseNoSupport(orderNo, carNo);
System.out.println("调度原因i="+i);
}
@Test
public void testCancelCauseLessTime(){
int i = transDispatchingServiceImpl.cancelCauseLessTime(orderNo, carNo);
System.out.println("调度原因i="+i);
}
@Test
public void testManualCauseNoSupport(){
int i = transDispatchingServiceImpl.manualCauseNoSupport(orderNo, carNo);
System.out.println("调度原因i="+i);
}
@Test
public void testAutoCauseLessTime(){
int i = transDispatchingServiceImpl.autoCauseLessTime(orderNo, carNo);
System.out.println("调度原因i="+i);
}
@Test
public void testUpdateTransDispatchingSucc(){
int i = transDispatchingServiceImpl.updateTransDispatchingSucc(orderNo, carNo, 77, 88, 99, 100);
System.out.println("调度成功i="+i);
}
}
spring测试junit事务管理及spring面向接口注入和实现类单独注入(无实现接口),实现类实现接口而实现类单独注入否则会报错。的更多相关文章
- 程序员笔记|Spring IoC、面向切面编程、事务管理等Spring基本概念详解
		
一.Spring IoC 1.1 重要概念 1)控制反转(Inversion of control) 控制反转是一种通过描述(在java中通过xml或者注解)并通过第三方去产生或获取特定对象的方式. ...
 - Spring中的事务管理
		
事务简介: 事务管理是企业级应用程序开发中必不可少的技术,用来确保数据的完整性和一致性 事务就是一系列的动作,它们被当作一个单独的工作单元.这些动作要么全部完成,要么全部不起作用 事务的四个关键属性( ...
 - Spring声明式事务管理(基于注解方式实现)
		
----------------------siwuxie095 Spring 声明式事务管理(基于注解方式实现) 以转 ...
 - Spring声明式事务管理(基于XML方式实现)
		
--------------------siwuxie095 Spring 声明式事务管理(基于 XML 方式实现) 以转账为例 ...
 - Spring编程式事务管理
		
--------------------siwuxie095 Spring 编程式事务管理 以转账为例 ...
 - Spring框架的事务管理之编程式的事务管理(了解)
		
1. 说明:Spring为了简化事务管理的代码:提供了模板类 TransactionTemplate,所以手动编程的方式来管理事务,只需要使用该模板类即可!!2.手动编程方式的具体步骤如下: 1.步骤 ...
 - XML方式实现Spring声明式事务管理
		
1.首先编写一个实体类 public class Dept { private int deptId; private String deptName; public int getDeptId() ...
 - 框架源码系列十一:事务管理(Spring事务管理的特点、事务概念学习、Spring事务使用学习、Spring事务管理API学习、Spring事务源码学习)
		
一.Spring事务管理的特点 Spring框架为事务管理提供一套统一的抽象,带来的好处有:1. 跨不同事务API的统一的编程模型,无论你使用的是jdbc.jta.jpa.hibernate.2. 支 ...
 - Spring Cloud 分布式事务管理
		
Spring Cloud 分布式事务管理 在微服务如火如荼的情况下,越来越多的项目开始尝试改造成微服务架构,微服务即带来了项目开发的方便性,又提高了运维难度以及网络不可靠的概率. Spring Clo ...
 
随机推荐
- 定位被选中的select
			
<script> var countryId = "{$user['country']}"; $("select[@name='country'] optio ...
 - mysql hive sql 进阶
			
场景: 说明.1.上面的数据是经过规整的数据,step是连续的,这个可以通过row_number实现.连续是必要的一个条件因为在计算第二个查询条件时依赖这个顺序,如果step不是数字字段可以截取然后转 ...
 - mongo源码学习(二)db.cpp之mongoDbMain方法分析
			
mongo后台进程的入口:mongo/src/mongo/db/dbmain.cpp,wmain(for windows)和main函数,main函数也很简单,就是委托给db.cpp中的mongoDb ...
 - 初试 spring web mvc
			
作为一名code需要了解更多的知识,编程方面的东西太多了,是个逐渐积累的过程.最近学习一下spring web mvc,写下我个人的一些经验. 1.准备jar包.spring mvc 已经到了版本4, ...
 - Freemarker操作字符串
			
1.substring(start,end)从一个字符串中截取子串start:截取子串开始的索引,start必须大于等于0,小于等于endend: 截取子串的长度,end必须大于等于0,小于等于字符串 ...
 - Centos7下安装运行keepalived
			
master服务器ip地址:192.168.0.182 slave服务器ip地址:192.168.0.189 虚拟ip(VIP,一个尚未占用的内网ip即可)地址:192.168.0.180 确认使用 ...
 - Rscripts的使用,以及如何为R脚本传参数
			
一.在windows下使用Rscript: 1.进入cmd.exe下,将当前工作目录转到Rscript.exe所在目录下面,然后调用Rscript **.R文件即可.但是所调用的.R文件必须是在R的 ...
 - 安卓程序代写 网上程序代写[原]自定义View
			
一. 自定义View介绍 自定义View时, 继承View基类, 并实现其中的一些方法. (1) ~ (2) 方法与构造相关 (3) ~ (5) 方法与组件大小位置相关 (6) ~ (9) 方法与触摸 ...
 - CSS弹出背景半透明窗口
			
<script type="text/javascript" src="<ww:url value='/js/jquery-1.8.3.min.js'/> ...
 - RIP路由协议及工作原理
			
RIP路由协议及工作原理 RIP(Routing information Protocol,路由信息协议)是应用较早.使用较普遍的内部网关协议(Interior Gateway Protocol,IG ...