1.根据日志分析,spring junit默认是自动回滚,不对数据库做任何的操作。

  1. 18:16:57.648 [main] DEBUG o.s.j.d.DataSourceTransactionManager - Switching JDBC Connection [net.sf.log4jdbc.sql.jdbcapi.ConnectionSpy@481d6644] to manual commit
  2. 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]]].
  3. 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注入

  1. package com.autoyol.service.trans;
  2.  
  3. import java.util.Map;
  4.  
  5. import org.junit.Test;
  6. import org.junit.runner.RunWith;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.test.context.ContextConfiguration;
  9. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  10. import org.springframework.test.context.transaction.TransactionConfiguration;
  11. import org.springframework.transaction.annotation.Transactional;
  12.  
  13. import com.autoyol.service.trans.impl.TransDispatchingServiceImpl;
  14.  
  15. /**
  16. * @author xxx
  17. * @function
  18. * @date 2016年4月23日
  19. * @version
  20. */
  21. @RunWith(SpringJUnit4ClassRunner.class)
  22. @ContextConfiguration(locations = "classpath:conf/applicationContext.xml")
  23. @Transactional
  24. @TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false)
  25. public class TransDispatchingServiceTest {
  26. @Autowired
  27. private TransDispatchingServiceImpl transDispatchingServiceImpl; //无面向接口编程,单独的类。
  28. // @Autowired
  29. // @Qualifier("testtestddd")
  30. // private TransDispatchingServiceImpl testtestddd; //要么单纯实现类,要么面向接口注入。 @service("testtestddd")
  31.  
  32. // @Autowired
  33. // private TransDispatchingService transDispatchingService; //面向接口编程
  34.  
  35. //
  36. // @Autowired
  37. // private TransDispatchingMapper transDispatchingMapper;
  38. Long orderNo = 449230224061l;
  39. Integer carNo = 431319914;
  40. @Test
  41. public void testAddCarSelectUpgrade(){
  42. int i = transDispatchingServiceImpl.addCarSelectUpgrade(orderNo);
  43. System.out.println("添加车辆升级条件i="+i);
  44. }
  45.  
  46. /*@Test
  47. public void testA(){
  48. Map<String,Object> reqMap = new HashMap<String,Object>();
  49. reqMap.put("orderNo", orderNo);
  50. reqMap.put("renterNo", 123);
  51. reqMap.put("rentTime", 201611l);
  52. reqMap.put("revertTime", 201612l);
  53. reqMap.put("ownerNo", 456);
  54. reqMap.put("carNo", carNo);
  55. reqMap.put("rentAmt", 300);
  56. reqMap.put("insurance", 300);
  57. reqMap.put("renterSt", 21);
  58. reqMap.put("ownereSt", 21);
  59.  
  60. int i = transDispatchingMapper.addTransDispatchingInitData(reqMap);
  61. System.out.println("i="+i);
  62. }*/
  63.  
  64. @Test
  65. public void testAddTransDispatchingInitData(){
  66. int i = transDispatchingServiceImpl.addTransDispatchingInitData(orderNo, 123, 201611l, 201612l, 456, carNo, 300, 300, 21, 21);
  67. System.out.println("添加调度初始化数据i="+i);
  68. }
  69. @Test
  70. public void testUpdateTransDispatchingStatus(){
  71. int i = transDispatchingServiceImpl.updateTransDispatchingStatus(orderNo, carNo, 2, null, 1);
  72. System.out.println("修改调度状态i="+i);
  73. }
  74. @Test
  75. public void testQueryTransDispatchingStatus(){
  76. System.err.println("transDispatchingServiceImpl="+transDispatchingServiceImpl);
  77. // System.err.println("transDispatchingService="+transDispatchingService);
  78. Map map = transDispatchingServiceImpl.queryTransDispatchingStatus(orderNo, carNo);
  79. System.err.println("查询当前的调度状态:map="+map);
  80. }
  81. @Test
  82. public void testRefuseCauseNoSupport(){
  83. int i = transDispatchingServiceImpl.refuseCauseNoSupport(orderNo, carNo);
  84. System.out.println("调度原因i="+i);
  85. }
  86. @Test
  87. public void testRefuseCauseLessTime(){
  88. int i = transDispatchingServiceImpl.refuseCauseLessTime(orderNo, carNo);
  89. System.out.println("调度原因i="+i);
  90. }
  91. @Test
  92. public void testCancelCauseNoSupport(){
  93. int i = transDispatchingServiceImpl.cancelCauseNoSupport(orderNo, carNo);
  94. System.out.println("调度原因i="+i);
  95. }
  96. @Test
  97. public void testCancelCauseLessTime(){
  98. int i = transDispatchingServiceImpl.cancelCauseLessTime(orderNo, carNo);
  99. System.out.println("调度原因i="+i);
  100. }
  101. @Test
  102. public void testManualCauseNoSupport(){
  103. int i = transDispatchingServiceImpl.manualCauseNoSupport(orderNo, carNo);
  104. System.out.println("调度原因i="+i);
  105. }
  106. @Test
  107. public void testAutoCauseLessTime(){
  108. int i = transDispatchingServiceImpl.autoCauseLessTime(orderNo, carNo);
  109. System.out.println("调度原因i="+i);
  110. }
  111. @Test
  112. public void testUpdateTransDispatchingSucc(){
  113. int i = transDispatchingServiceImpl.updateTransDispatchingSucc(orderNo, carNo, 77, 88, 99, 100);
  114. System.out.println("调度成功i="+i);
  115. }
  116. }

spring测试junit事务管理及spring面向接口注入和实现类单独注入(无实现接口),实现类实现接口而实现类单独注入否则会报错。的更多相关文章

  1. 程序员笔记|Spring IoC、面向切面编程、事务管理等Spring基本概念详解

    一.Spring IoC 1.1 重要概念 1)控制反转(Inversion of control) 控制反转是一种通过描述(在java中通过xml或者注解)并通过第三方去产生或获取特定对象的方式. ...

  2. Spring中的事务管理

    事务简介: 事务管理是企业级应用程序开发中必不可少的技术,用来确保数据的完整性和一致性 事务就是一系列的动作,它们被当作一个单独的工作单元.这些动作要么全部完成,要么全部不起作用 事务的四个关键属性( ...

  3. Spring声明式事务管理(基于注解方式实现)

    ----------------------siwuxie095                                 Spring 声明式事务管理(基于注解方式实现)         以转 ...

  4. Spring声明式事务管理(基于XML方式实现)

    --------------------siwuxie095                             Spring 声明式事务管理(基于 XML 方式实现)         以转账为例 ...

  5. Spring编程式事务管理

    --------------------siwuxie095                                 Spring 编程式事务管理         以转账为例         ...

  6. Spring框架的事务管理之编程式的事务管理(了解)

    1. 说明:Spring为了简化事务管理的代码:提供了模板类 TransactionTemplate,所以手动编程的方式来管理事务,只需要使用该模板类即可!!2.手动编程方式的具体步骤如下: 1.步骤 ...

  7. XML方式实现Spring声明式事务管理

    1.首先编写一个实体类 public class Dept { private int deptId; private String deptName; public int getDeptId() ...

  8. 框架源码系列十一:事务管理(Spring事务管理的特点、事务概念学习、Spring事务使用学习、Spring事务管理API学习、Spring事务源码学习)

    一.Spring事务管理的特点 Spring框架为事务管理提供一套统一的抽象,带来的好处有:1. 跨不同事务API的统一的编程模型,无论你使用的是jdbc.jta.jpa.hibernate.2. 支 ...

  9. Spring Cloud 分布式事务管理

    Spring Cloud 分布式事务管理 在微服务如火如荼的情况下,越来越多的项目开始尝试改造成微服务架构,微服务即带来了项目开发的方便性,又提高了运维难度以及网络不可靠的概率. Spring Clo ...

随机推荐

  1. 编写js语句结束时保持良好的习惯-源于身边例子

    记录以下信息,源于一件事情,一位同事,每次我改他的js代码,发现语句结束都不使用分号作为结束.长长的一串,读起来比较吃力.即便语句的结束不使用分号结束,代码仍然不会报错,正常运行,所以不少程序员懒得去 ...

  2. [RTC]系统时间NTP和RTC同步,Debian的时区配置

    转自:http://www.cnblogs.com/jiu0821/p/5999566.html Debian的时区配置 一. 修改时区 1. 查看当前时区 命令 : "date -R&qu ...

  3. SQL 增删改查

    create table [表名]([自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,[字段1] nVarChar(50) default \'默认值\' null , ...

  4. CreateMutex和WaitForSingleObject组合的有关问题

    CreateMutex和WaitForSingleObject组合的问题在网上看见一个dll的代码,其中有这样几行 case   DLL_PROCESS_ATTACH:   ........ hmut ...

  5. python基础归结

    00.python程序格式 #开头的语句是注释,其他每一行都是一个语句. 语句以冒号(:)结尾时,缩进的语句视为代码块(没有C语言中{}区分代码块). 约定俗称, 4个空格缩进,Tab或空格均可以,但 ...

  6. linux文件系统比较

    Linux上有许多可用的文件系统.每个文件系统都有其特定的用途,以便于特定用户解决不同的问题.本文的焦点集中在Linux平台上文件系统的主流选择.毫无疑问,其它的场景下还有一些别的选择. 文件系统:它 ...

  7. python计算机视觉项目实践

    这是一个贝叶斯模型的计算机视觉小项目.希望大家通过这个简单的项目知道一般的计算机视觉项目是怎样操作的. 我先讲题目放在这里希望有兴趣的童鞋花一周的时间思考并用python实现.一周以后我来发布我的详细 ...

  8. freemarker自己定义标签报错(二)

    freemarker自己定义标签 1.错误描写叙述 freemarker.core.ParseException: Unexpected end of file reached. at freemar ...

  9. 【C】——APUE小程序之递归遍历目录

    递归降序遍历目录层次结构,并按文件类型计数. 先介绍相关的函数: #include<dirent.h> DIR *opendir(const char *pathname); //打开目录 ...

  10. JS BUG 传递数字过大,数据值会变化

    如果要在js函数中传递大整型数值,一定要用字符串,否则会出现精度不准确 function testfun('2345234523452141234123412341234523452345123') ...