浏览 2301 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-12-07
先来看一下AbstractJUnit4SpringContextTests和AbstractTransactionalJUnit4SpringContextTests的原型,了解两者的区别: AbstractJUnit4SpringContextTests: @RunWith(SpringJUnit4ClassRunner.class) //指定测试用例运行器 @TestExecutionListeners( // 注册了两个TestExecutionListener监听器 { DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class }) public class AbstractJUnit4SpringContextTests implements ApplicationContextAware { … } AbstractTransactionalJUnit4SpringContextTests: // 注册测试用例事务管理的监听器 @TestExecutionListeners( { TransactionalTestExecutionListener.class }) @Transactional // 使测试用例的所有方法都将工作于事务环境下 public class AbstractTransactionalJUnit4SpringContextTests extends AbstractJUnit4SpringContextTests { … } 可以看出AbstractTransactionalJUnit4SpringContextTests 是继承于AbstractJUnit4SpringContextTests 并增加了一个TransactionalTestExecutionListener监听器,可见AbstractTransactionalJUnit4SpringContextTests 增加了测试类对事物的控制,可见测试类可以使用注解也可以使用继承抽象类。 接下来看一下3个监听器的作用: DependencyInjectionTestExecutionListener提供了依赖注入的功能,它负责解析测试类中的@Autowried和@Resource注解 DirtiesContextTestExecutionListener只要的作用是处理测试类中的上下文遭到破坏时,重新注册上下文,即在测试方法上使用@DirtiesContext启用;当测试方法被@DirtiesContext注解修饰时,当测试方法结束的时候,Spring TestContext会刷新Spring的上下文(就是重新创建ApplicationContext)。 TransactionalTestExecutionListener主要负责解析和事物操作有关的注解,例如:@Transaction、@BeforeTransaction、@AfterTransaction、@NotTransactional 以及 @Rollback。 下面来看一下测试相关注解的简单说明: @TransactionConfiguration使用在类级别上,里面有两个属性,transactionManager 指定事物管理器的名字,默认的名称为:transactionManager;defaultRollback 配置全局默认的事务回滚,默认为:false。 @BeforeTransaction和@AfterTransaction可见是在需要事物的测试方法执行前后调用,和JUnit4中@Before、@After注解类型,当时前者会忽略声明了@NotTransactional注解的测试方法。 @NotTransactional修饰那些不需要事物的测试方法。 @Rollback可以改变测试方法的回滚方式,例如@Rollback(true)可以是测试方法的事物设置为执行完后事物马上回滚。 还有一些注解的使用方法可以参考Spring Reference。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |