在使用了Spring的项目中做单元测试时,以前的标准写法是这样的:

但是在高版本的Spring框架中(Spring4.2以后),@TransactionConfiguration已经标注为过时的注解,查看官方文档会发现,替代的方式为:

这里需要说明的是:

(1).原来的defaultRollback属性现在由专门的注解@Rollback(新增注解)代替,其中只有一个属性就是boolean型的value,作用没变,值为true表示测试时如果涉及了数据库的操作,那么测试完成后,该操作会回滚,也就是不会改变数据库内容;值为false则与此相反,表示你测试的内容中对数据库的操作会真实的执行到数据库中,不会回滚。官方文档中还给出了一个新注解@Commit,该注解与@Rollback只能使用一个,同时用貌似可能出现问题,@Commit注解中无属性需要设置,不像@Rollback中还有一个value属性,用了@Commit,你的测试操作会改变数据库,不会回滚,等同于@Rollback(value=false)。这里建议使用@Rollback,不要用@Commit,这样起码你有两种选择可以选。

(2).原来放在@TransactionConfiguration注解中的transactionManager属性现在放在了@Transactionl注解中。

顺便提一下@RunWith注解的作用,了解的朋友可以走人了。

首先我们写了一个测试类,像上面截图中的BaseDaoTestCase一样,该类中会有许多测试方法,测试方法上面会利用@BeforeClass、@before、@Test、@after、@AfterClass 这5个注解进行测试,类有了,方法有了,那么当你执行某个测试方法时,是由谁来调用的这个测试方法呢,或者说,你执行的测试方法是在哪里运行的呢,答案就是@RunWith注解里面标注的类,也就是说这个注解的作用是告诉系统你执行测试方法时,调用者是谁,这里就是SpringJunit4ClassRunner类。默认情况下,也就是假如你省略了@RunWith注解,测试类上面不写它,系统默认的是相当于你注解了@RunWith(BlockJUnit4ClassRunner.class),实际上SpringJunit4ClassRunner继承了BlockJUnit4ClassRunner。因为你的项目中使用了Spring,那么测试方法中要测试的内容一般都会用到Spring管理的bean,此时你只能用SpringJunit4ClassRunner而不能用BlockJUnit4ClassRunner了,否则Spring环境中管理的东西你是无法在测试方法中使用的,测试方法拿不到会报空指针。

@TransactionConfiguration过时与替代写法的更多相关文章

  1. Android中getDrawable和getColor过时的替代方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. 前言 Android SDK 升级到 23 之后,getDrawable和getColor方法提示过时. 解决方案 getResources(). ...

  2. oracle中not in 和 in 的替代写法

    -- not in 的替代写法select col from table1 where col not in(select col from table2); select col,table2.co ...

  3. jquery live hover事件的替代写法

    HTML中的hover行为通常在样式中定义,利用jquery实现此效果有两种情况. 第一种是常见的针对页面中静态的元素,以改变元素样式中的border-color为例,写法如下: $(function ...

  4. ORACLE变量定义及使用(另,T-SQL EXISTS的PLSQL替代写法)

    1. 简单变量 declare v_cnt NUMBER(10,0) := 0; BEGIN   SELECT COUNT(1) INTO v_cnt FROM concept.Decoction W ...

  5. getColor()方法过时的替代方法

    Android SDK 升級到 23 之後,getResource.getColor(R.color.color_name) 過時 使用新加入的方法 ContextCompat.getColor(co ...

  6. Android过时方法替代

    managedQuery替换为cursorLoader example: uri = data.getData(); String[] proj = {MediaStore.Images.Media. ...

  7. Sigmoid函数的替代:overflow encountered in exp in computing the logistic function

    RuntimeWarning: overflow encountered in exp in computing the logistic function 以下是sigmoid函数的标准写法,但是如 ...

  8. Android 偶遇小问题解决方案集合

    1.Android 如何让EditText不自动获取焦点 解决方案:找一个EditText的父级控件把EditText默认的行为截断了!设置 android:focusable="true& ...

  9. AngularJs的UI组件ui-Bootstrap分享(十)——Model

    Model是用来创建模态窗口的,但是实际上,并没有Model指令,而只有$uibModal服务,创建模态窗口是使用$uibModal.open()方法. 创建模态窗口时,要有一个模态窗口的模板和对应的 ...

随机推荐

  1. 玩转Android---组件篇---Intent(意图)

    Intent的中文意思是“意图,目的”的意思,可以理解为不同组件之间通信的“媒介”或者“信使”. 目标组件一般要通过Intent来声明自己的条件,一般通过组件中的<intent-filter&g ...

  2. 当重装eclipse后,给现有web项目添加tomcat的构建路径

    在eclipse“首选项”-“service environment”中配置好tomcat后,给现有web项目添加构建路径: 1.选中一个web项目右键选中“构建路径”-“配置构建路径”

  3. 微信小程序-修改单选框和复选框大小的方法

    方法有两种: 一:采用css的zoom属性 zoom缩放会将元素保持在左上角,并且会有毛边,可能会稍稍改变元素原来的形状. 二:采用css3的transform:scale属性 zoom缩放会将元素保 ...

  4. JOS环境搭建

    想写一个OS很久了,今天开始正式动工了!! 大家都知道操作系统是计算机科学中十分重要的一门基础学科.但是以前在学习这门课时,仅仅只是把目光停留在课本上一些关于操作系统概念上的叙述,并不能对操作系统有着 ...

  5. 简单的PHP+Mysql实现分页

    <?php /** * PHP+Mysql实现分页 * **/ ?> <html> <head> <meta http-equiv="Content ...

  6. python模块之calendar方法详细介绍

    calendar,是与日历相关的模块.calendar模块文件里定义了很多类型,主要有Calendar,TextCalendar以及HTMLCalendar类型.其中,Calendar是TextCal ...

  7. c/c++中define用法详解及代码示例

    https://blog.csdn.net/u012611878/article/details/52534622   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog. ...

  8. dotnet core 命令行使用web deploy 部署项目到远程IIS

    众所周知dotnet cli可以用来编译和生成发布.net core,其实dotnet publish 还能进行WebDeploy.先解释一下使用场景一般是用于持续部署 dotnet publish进 ...

  9. vim制表符占位个数修改

    进入配置文件:$ sudo vi /etc/vim/vimrc 在文件末尾添加:set ts=4

  10. Aura Component Skills & Tools

    本篇参考: https://trailhead.salesforce.com/content/learn/modules/lex_dev_lc_vf_fundamentals 不知不觉已经做了三年多的 ...