当前位置: 首页 > news >正文

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

 

相关文章:

  • CodeForces 660C Hard Process
  • 流媒体选择Nginx是福还是祸?
  • 解读Secondary NameNode的功能
  • linux下Bash函数功能之编写脚本(十二)
  • PHP~foreach遍历名单数组~有必要多次观看练习
  • 玩聚的博客墙 V
  • 第九周周记
  • Linux系统下proc目录详解
  • 每天一个linux命令:du
  • 【Swift学习】Swift编程之旅---类和结构体(十三)
  • 源代码的下载和编译
  • SSH的整合
  • 项目重构之数据源配置与优化:log4j 配置数据库连接池Druid,并实现日志存储到数据库...
  • Java---常用基础面试知识点
  • 对Java中接口和抽象类的理解
  • Angular 响应式表单 基础例子
  • create-react-app项目添加less配置
  • exif信息对照
  • fetch 从初识到应用
  • Hexo+码云+git快速搭建免费的静态Blog
  • js
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Spring Cloud Feign的两种使用姿势
  • vue.js框架原理浅析
  • 多线程事务回滚
  • 基于web的全景—— Pannellum小试
  • 前端js -- this指向总结。
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 时间复杂度与空间复杂度分析
  • 实现菜单下拉伸展折叠效果demo
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 回归生活:清理微信公众号
  • # include “ “ 和 # include < >两者的区别
  • #stm32整理(一)flash读写
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (二十四)Flask之flask-session组件
  • (南京观海微电子)——I3C协议介绍
  • (转)fock函数详解
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .NET中的Exception处理(C#)
  • @property括号内属性讲解
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • @WebService和@WebMethod注解的用法
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • [Android]一个简单使用Handler做Timer的例子
  • [BUUCTF NewStarCTF 2023 公开赛道] week3 crypto/pwn
  • [C#]winform制作仪表盘好用的表盘控件和使用方法
  • [Contiki系列论文之2]WSN的自适应通信架构
  • [EFI]ASUS EX-B365M-V5 Gold G5400 CPU电脑 Hackintosh 黑苹果引导文件
  • [hdu 3652] B-number