这个SchoolTest类要继承AbstractTransactionalJUnit4SpringTestContextTests 哥纯粹是背下来的 毕竟以前当过翻译 英文还凑合 不过背不下来也没关系 其实很好理解
Transactional代表事务的 其他几个单词其实不用解释你也知道 多默写几遍就自然熟练了

接下来 在这个类上面加一个注解@RunWith(SpringJUnit4ClassRunner.class)
RunWith是junit4的注解 意思是此类由这个注解的参数的类来主导单元测试 参数类型是Class
SpringJUnit4ClassRunner.class是SpringTest中的一个类 作用类似驱动 意思是由Spring Test来主导本次单元测试

接下来写第四个注解
@TransactionConfiguration(transactionManager="txManager",defaultRollback=true)
TransactionConfiguration 顾名思义 是配置事务情况的注解
第一个参数transactionManager是你在applicationContext.xml或bean.xml中定义的事务管理器的bean的id
defaultRollback是个很关键的参数 是表示测试完成后事务是否会滚 参数是布尔型的 默认就是true 但强烈建议写上true

这是我的Spring配置文件 大部分配置都是我手写的 少部分是抄spring官方文档的

下面 写一个要测试的方法 加上两个注解
一个是
@Test 这个不多说了 Junit自带的注解 表示要测试的方法
另一个是
@Transactional 表示这个方法是事务的起始点
注意的是 在业务层最好还是别用注解托管事务 因为每个方法都要这么写比较麻烦 用xml+spring表达式可以给所有方法托管事务

现在开始测试
测试成功! 打开数据库 什么也没有 因为spring替你回滚了事务 保护了数据库现场!

看数据库表 什么也没有吧
