绝对好文, 快2点了, 可算看到点好东西.
1,为了尽量平稳过渡,继续用junit3.8,而不是直接使用junit4
2,@ContextConfiguration(locations = { "classpath:applicationContext-sys.xml",
"classpath:applicationContext.xml" })
public class BaseTests extends AbstractTransactionalJUnit38SpringContextTests {
}
所有的TestCase都继承上面这个类,使得spring配置文件重用,同时ApplicationContext也是同一个。
3,要测试的service类通过@Autowired注入,例如
@Autowired
private UserDAO userDAO;
4,注意,对于继承了BaseTests的测试类里的每一个test方法,运行测试时都会按
setUp()-->test方法-->tearDown()的顺序执行,而且这3个组成一个事务,执行完后默认会回滚。
如果不想回滚,在类名前面@TransactionConfiguration(defaultRollback = false)
5,因为还是用的junit3.8,故TestSuite的写法照旧
public class SuiteTests {
public static Test suite() {
TestSuite suite = new TestSuite("运行所有测试");
suite.addTestSuite(UserServiceTests.class);
suite.addTestSuite(RoleServiceTests.class);
return suite;
}
}
6,测试类并没有当作bean配置在application.xml文件中,
spring测试框架是如何使"setUp()-->test方法-->tearDown()"处于同一个事务的呢?
具体就要看AbstractTransactionalJUnit38SpringContextTests了,是通过注解实现的。
service方法在test方法里面,这两个方法都配置有事务,即形成了事务的嵌套,这里有点复杂了,我还没想清楚。
不过可以肯定的是,如果test方法的事务不提交,那么service方法的事务也不会提交。
7,如果想在jdk1.4下重用ApplicationContext,可采用以下的办法,出处再补上。这个办法与前面的进行比较,
我觉得最大的区别是这种写法要手动进行测试数据的清除。
public class BaseTestCase extends TestCase {
static ApplicationContext context = null;
static {
// perform the "global" set up logic
// 这里的代码会在类初始化时执行,所以相当于BeforeClass
String[] CONFIG_FILES_MIN = { "applicationContext-sys.xml",
"applicationContext.xml" };
context = new ClassPathXmlApplicationContext(CONFIG_FILES_MIN);
System.out.println("setup");
// and now register the shutdown hook for tear down logic
// 将一个匿名方法写到这里,就相当于AfterClass
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
System.out.println("shutdown");
}
});
}
protected void setUp() throws Exception {
}
}
8,如果用junit-4.jar,去官网下载junit4.4.jar。不要采用myeclipse自带的junit4.jar,因为这个不带JUnit4ClassRunner类。
另外不要用junit-4.5.jar,据说与spring2.5有冲突,
详见Spring Test Context Framework not compatible with JUnit 4.5,http://jira.springframework.org/browse/SPR-5145
分享到:
相关推荐
Junit4+Spring2.5单元测试代码示例同时也适用注解注入的形式测试(前提要导好测试的包哦,包MyEclipce自带了)
Spring2.5继续坚持了简化企业级应用开发,同时给复杂问题提供强大的、非侵入性解决方案的发展趋向,特别是为那些使用Java 5或更新版本java的开发人员提供了进一步简化而强大的新特性。这些新特性包括:注解驱动的...
这是和大家分享的web开发所需要的各类API大全,包括Junit api,spring2.5api,servlet api ,和大家分享
2006年5月,BEA系统宣布了他们在一个名为Pitchfork的项目上与Interface21的合作,该项目提供了基于Spring的Java EE 5编程模型的实现,包括支持用于注入(injection)、拦截( interception)和事务处理...
struts2_spring3.0_Junit4.7_Maven2.2.1_整合运行说明_培训
直接拷贝到eclipse的空间目录下,加入常见的jar包,和hibernate,junit,spring的包,就可以对其spring ,hibernate进行测试。
NULL 博文链接:https://364232252.iteye.com/blog/2369962
Junit学习笔记,希望有用~~~~~~~~~~~~~~~~~~~~~~
spring-Test,Junit4 jar,和测试代码
struts-junit spring-mock spring-test junit等的javadoc.jar格式的API文档,直接导入Eclipse/MyEclipse/Netbeans等IDE即可实现快速API查询。 包含以下文件: File name -------------------------------------- ...
Spring Test 整合 JUnit 4 使用总结.rar
利用spring2.5 + ibatis 2.3 + struts2.1实现三个框架的整合,功能包括增、删、改、查以及存储过程的处理,同时加进了Junit测试框架。
JUnit是一款由Erich Gamma(《设计模式》的作者)和Kent Beck(极限编程的提出者)编写的开源的回归测试...与早期的JUnit 3相比,JUnit 4.1依赖于Java 5.0的新特性,因此无法兼容于jdk 1.4,可以说是一个全新的框架。
spring4+junit4.8 +多线程TheadTool
免费了,spring4+JUnit简单测试,注解组件扫描和xml显示组件扫描,我自己都忘了里面有什么了。
spring AOP及JUNIT包 com.springsource.net.sf.cglib-2.2.0,aopalliance.jar junit4.4.jar aspectj.rar
Junit学习笔记和课件,欢迎学习爱好者下载资源,共同学习。。
Spring3+junit的单元测试的代码示例。
本文内容包括: 概述直接使用JUnit测试Spring程序存在的不足一个需要测试的Spring服务类编写UserService的测试用例准备测试数据并检测运行结果SpringTestContext测试框架体系结构小结参考资料Spring2.5TestContext...