import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.transaction.annotation.Transactional;
//使用@RunWith(SpringJUnit4ClassRunner.class),才能使测试运行于Spring测试//环境
@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration 注解有以下两个常用的属性:
//locations:可以通过该属性手工指定 Spring 配置文件所在的位置,可以指定一个或多个 Spring 配置文件
//inheritLocations:是否要继承父测试类的 Spring 配置文件,默认为 true
@ContextConfiguration(locations={"classpath:spring/spring-config-business.xml"})
public class TestRisk extends AbstractTransactionalJUnit4SpringContextTests{
@Autowired
private IRiskBO bo;
@Test
@Transactional
@rollback(false)
public void Test()
{
Risk risk = bo.findRiskById("CW01", true);
System.out.println(risk.getName()+":"+risk.getCode());
}
}
说明:
@Test
@Transactional
@Rollback(false)
不同写法,内部执行的源码也不一样:
//class load
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//file load
ApplicationContext applicationContext = new FileSystemXmlApplicationContext("src/main/webapp/WEB-INF/applicationContext.xml");
再说一下Spring提供的JUnit框架扩展:
1. AbstractSpringContextTests:spring中使用spring上下文测试的Junit扩展类,我们一般不会使用这个类来进行单元测试,它是spring内部设计使用到的类
2. AbstractDependencyInjectionSpringContextTests:这是AbstractSpringContextTests的直接子类,支持依赖spring上下文的测试类,这个类不支持事务。
3. AbstractTransactionalSpringContextTests:这是 AbstractDependencyInjectionSpringContextTests的直接子类,这个类一般应用在事务相关的测试中,一旦完成每个测试它就会正常地回滚事务,不会真正更新数据库,若要手动设置事务相关操作,你可以重载onSetUpInTransaction和 onTearDownInTransaction方法,以便手工开始并提交事务,或者调用setComplete()方法。这个类也可以在没有事务的情况下,使用这个类。
4. AbstractTransactionalDataSourceSpringContextTests:这是 AbstractTransactionalSpringContextTests的直接子类,它使用了Spring的基于JDBC的 jdbcTemplate工具类,支持数据库级别的事务。
你的TestCase Class必须继承的是上述四个AbstractXXXSpringContextTests中的其中一个。一般我们继承SpringJUnit4ClassRunner或者利用注解声明@RunWith(SpringJUnit4ClassRunner.class)
参考网站:
http://zxf-noimp.iteye.com/blog/854556
http://chenzehe.iteye.com/blog/1468130
分享到:
相关推荐
Spring的主要特点包括依赖注入(DI)和面向切面编程(AOP)。DI使得对象之间的依赖关系可以通过配置文件或注解来管理,而非硬编码。AOP则允许开发者定义横切关注点,如日志、事务管理等,使其独立于业务逻辑。Spring...
此外,Struts2可以与Spring进行深度集成,通过Spring插件,Action类可以直接由Spring管理,实现依赖注入,提升代码的可测试性和可维护性。 Spring框架则扮演了容器的角色,管理着应用程序中的所有bean。它提供了AOP...
3. spring-beans:包含bean工厂和bean定义,支持XML和注解配置。 4. spring-aop:实现了面向切面编程,可以方便地进行方法拦截和切面逻辑的定义。 5. spring-tx:提供了声明式事务管理,使得事务处理更加简单。 6. ...
`JUnit` 是Java编程语言中最流行的单元测试框架,它允许开发者编写可重复运行的测试用例,以验证代码的正确性。`Spring` 和 `Hibernate` 分别是Java企业级应用中的两大支柱,`Spring` 提供了一个强大的依赖注入容器...
- 测试和调试:通过单元测试验证集成是否成功,确保数据持久化和事务管理按预期工作。 4. 源码和工具: - "myAgent"可能是指一个自定义的代理类或工具,它可能在集成过程中用于监控、日志记录或其他辅助功能。在...
在IT行业中,Spring框架是Java领域最常用的轻量级应用框架之一,它为开发者提供了强大的依赖注入、AOP(面向切面编程)以及模块化的功能。而Hibernate则是一款优秀的对象关系映射(ORM)框架,它简化了数据库操作,...
3. **Spring**:Spring框架是Java企业级应用开发的核心框架,它提供了全面的基础设施支持,包括依赖注入(DI)、面向切面编程(AOP)、事务管理等。Spring还集成了其他许多框架,如Hibernate,使得它们能协同工作。...