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 ...
随机推荐
- [RTC]系统时间NTP和RTC同步,Debian的时区配置
转自:http://www.cnblogs.com/jiu0821/p/5999566.html Debian的时区配置 一. 修改时区 1. 查看当前时区 命令 : "date -R&qu ...
- C# BCC异或校验法
通讯协议中最后一位是校验位 采用BCC(异或校验)法 这个怎么解释? 就是 把16进制的字符串转换成byte[]数据,依次拿出来进行异或一下 然后返回的值和校验位对比下 看看对不对 例如: 23230 ...
- 【oneday_onepage】—— 美国人的仪容整洁与个人卫生
There used to be an old joke in America that people should take a bath once a week, whether they nee ...
- 【javascript】分享一款经典的日期控件 My97DatePicker
最近在做平台项目,其中有用到日期选择,相对于 jqueryui 的 datepicker 我更喜欢 My97DatePicker. 理由 体积小,相对于 jqueryui 的 datepicker 的 ...
- SpringBoot(三):文件下载
SpringBoot(三):文件下载 2017年08月02日 10:46:42 阅读数:6882 在原来的SpringBoot–uploadfile项目基础上添加文件下载的Controller: @R ...
- Nodejs中export的作用
在上一节,我们编写了一个hello.js文件,这个hello.js文件就是一个模块,模块的名字就是文件名(去掉.js后缀),所以hello.js文件就是名为hello的模块. 我们把hello.js改 ...
- pom.xml设置maven的编码方式
<build> <defaultGoal>compile</defaultGoal> <plugins> <plugin> <grou ...
- 微信小程序——时间戳的转换及调用
开发微信小程序网盘功能模块的时候,需要获取到网盘文件夹创建的时间.如下图: 但是请求返回的数据是一段时间戳,如下图: 所以我们只能通过js把时间戳转换成时间格式. 在小程序官网的Demo的utils. ...
- 【android】环形进度条实现
先上效果图(压缩尺寸后出现锯齿,原图边缘很细腻的喂~) 特性: 1:支持环形带字 .环形不带字(中间盖上圆形图片,实现天天动听播放器在通知栏播放进度的效果).实心 2:线程安全,不需要写handler ...
- 《Qt数据类型》--QByteArray,QString,int,hex之间的转化
对于QString和QByteArray,他们都有一个toInt的静态函数,QString::toInt()是根据string的字面值转化为int类型,比如string:"123" ...