`
LegendBeen
  • 浏览: 8700 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Spring Test + Junit4 单元测试备忘

阅读更多

1. 加入依赖包

  使用Spring的测试框架需要加入以下依赖包

  • JUnit 4 (官方下载:http://www.junit.org/
  • Spring Test (Spring框架中的test包)
  • Spring 相关其他依赖包(不再赘述了,就是context等包)

2. 创建测试源目录和包

  在此,推荐创建一个和src平级的源文件目录,因为src内的类都是为日后产品准备的,而此处的类仅仅用于测试。而包的名称可以和src中的目录同名,这样由于在test源目录中,所以不会有冲突,而且名称又一模一样,更方便检索。

3. 创建测试类

  创建一个测试用的类,推荐名称为 “被测试类名称 + Test”。

  测试类应该继承与 AbstractJUnit4SpringContextTestsAbstractTransactionalJUnit4SpringContextTests

  对于 AbstractJUnit4springcontextTests 和 AbstractTransactionalJUnit4SpringContextTests 类的选择:

  如果再你的测试类中,需要用到事务管理(比如要在测试结果出来之后回滚测试内容),就可以使用AbstractTransactionalJUnit4SpringTests类。事务管理的使用方法和正常使用Spring事务管理是一样的。

4. 配置测试类

  添加如下内容在class前,用于配置applicationContext.xml文件的位置。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath*:applicationContext.xml","classpath*:hibernate.xml"})
@TransactionConfiguration(transactionManager="transactionManager", defaultRollback=false)  
@Transactional 
public class AppLogTest extends AbstractTransactionalJUnit4SpringContextTests {

 5. 创建测试方法

  创建测试用方法,推荐名称为 “被测方法名称+ Test”。

  测试方法上方加入 @Test

6. 通过JUnit 4 执行

  右键方法名,选择则“Run As”→“JUnit Test”即可

附录1:整体测试类文件

import java.util.Date;
import java.util.List;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.test.annotation.NotTransactional;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.AfterTransaction;
import org.springframework.test.context.transaction.BeforeTransaction;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;

import edu.wanghuan.hrm.dao.AppLogDAO;
import edu.wanghuan.hrm.pojo.AppLog;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath*:applicationContext.xml","classpath*:hibernate.xml"})
@TransactionConfiguration(transactionManager="transactionManager", defaultRollback=false)  
@Transactional 
public class AppLogTest extends AbstractTransactionalJUnit4SpringContextTests {

	@Autowired
	@Qualifier("AppLogDAO")
	private AppLogDAO appLogDAO;
	
	@Test  
	@Rollback(true)  // overrides the class-level defaultRollback setting  
	public void testSave(){
		AppLog appLog = new AppLog();
		appLog.setCreatedDate(new Date());
		appLog.setCreatedDept("测试部门");
		appLog.setCreator("LegendBeen");
		appLog.setDetail("JUnit 4 test");
		appLog.setIpAddr("191.168.1.156");
		appLog.setModuleName("JUnit4");
		
		appLogDAO.save(appLog);
	}

	@Test
	@NotTransactional 
	public void testList(){
		List<AppLog> logs = appLogDAO.findAll();
		System.out.println("LIST SIZE: " + logs==null?0:logs.size());
		for (AppLog appLog : logs) {
			System.out.println(appLog.getAppLogId());
			System.out.println(appLog.getCreator());
			System.out.println(appLog.getCreatedDept());
			System.out.println(appLog.getCreatedDate());
			System.out.println(appLog.getModuleName());
			System.out.println(appLog.getIpAddr());
		}
	}

	@BeforeTransaction  
	public void verifyInitialDatabaseState() {  
	// logic to verify the initial state before a transaction is started  
		System.out.println("##################Before Transaction");
	}

	@AfterTransaction  
	public void verifyFinalDatabaseState() {  
	 // logic to verify the final state after transaction has rolled back  
		System.out.println("##################After Transaction");
	} 

}

 

分享到:
评论

相关推荐

    spring3 + mybatis3 + junit4 可运行项目示例

    这个项目的核心是利用Spring作为应用的ioc(Inversion of Control,控制反转)和aop(Aspect Oriented Programming,面向切面编程)容器,MyBatis作为持久层框架,以及JUnit4用于进行单元测试和集成测试。...

    spring+mybatis+junit4单元测试

    改代码是我的我的一个项目自己写完后自测所以就写了这个junit的单元测试类,以及可能会遇到的一些问题,以及其中的一些经验,项目用的是spring + mybatis。我写的这个测试类基本概括了单元测试的基本用法,只要按照...

    spring+Junit4单元测试

    通过Spring集成单元测试,以后测试service层内容时,就不用getBean()来获得Service层对象了

    Struts2+Spring+hibernate中对action的单元测试环境搭建[总结].pdf

    在搭建单元测试环境时,需要使用的 Jar 包有 junit4.jar 和 struts2-junit-plugin-2.1.8.jar。junit4.jar 是 Eclipse 自带的,可以在项目路径中导入。struts2-junit-plugin-2.1.8.jar 是 Struts2 提供的测试插件,...

    基于Springboot+Junit+Mockito做单元测试的示例

    基于Springboot+Junit+Mockito做单元测试的示例 本文将从多个角度详细介绍如何使用Springboot、Junit和Mockito进行单元测试,并以实例代码演示。以下是本文的知识点总结: 一、单元测试的重要性 单元测试是软件...

    Spring+JUnit4 +Ant测试报告

    总之,Spring+JUnit4+Ant的组合为Java开发提供了强大的单元测试能力。通过合理配置和使用这些工具,开发者可以更高效地进行测试,保证代码质量,降低维护成本。在压缩包文件"junitTest"中,可能包含了示例的测试代码...

    spring4+JUnit简单测试

    总的来说,Spring4提供了丰富的测试支持,结合JUnit能够实现从单元测试到集成测试的全面覆盖。这不仅提高了代码质量,也加速了问题定位和修复的过程。在实际开发中,应充分利用这些工具,确保软件的健壮性和稳定性。...

    Junit4+Spring2.5单元测试代码示例(也适用注解测试)

    Junit4+Spring2.5单元测试代码示例同时也适用注解注入的形式测试(前提要导好测试的包哦,包MyEclipce自带了)

    junit5.rar包含JUnit Platform + JUnit Jupiter + JUnit Vintage依赖jar包

    JUnit Jupiter + JUnit Vintage,包含依赖包:junit-jupiter-5.5.1.jar,junit-jupiter-engine-5.5.1.jar,junit-jupiter-params-5.5.1.jar,junit-platform-launcher-1.5.1.jar,junit-platform-testkit-1.5.1.jar,...

    测试+JUnit+单元测试+学习

    在JUnit中,测试类通常继承自`JUnit4`的`TestCase`类,或者在JUnit5中,使用`@Test`注解标记测试方法。这些方法会在运行测试时自动执行,如果方法内部抛出未捕获的异常,那么该测试就会失败。 要开始使用JUnit,...

    测试+JUnit+单元测试+学习阶段

    JUnit作为Java领域最流行的单元测试框架,是开发者必备的工具之一。本学习阶段将带你深入理解和掌握JUnit的使用,以及如何通过单元测试来提升代码质量。 首先,我们需要了解什么是单元测试。单元测试是对软件中的...

    maven+spring+mybatis+mysql+junit jar项目框架搭建

    总结起来,"maven+spring+mybatis+mysql+junit jar项目框架搭建"是一个完整的Java后端开发流程,涵盖了从项目构建、服务层、数据访问层到数据库管理和单元测试的全过程。这样的框架为开发者提供了一个高效、稳定且...

    Spring+Jotm+Hibernate+Oracle+Junit 实现JTA分布式事务要求Demo工程

    3.Spring+Junit4单元测试,优点:不会破坏数据库现场,等等。 (特别注意:Spring3.0里不在提供对jotm的封装,spring-tx里没有JotmFactoryBean.class,我在jar里添加了类) 2)Demo 导入说明: 1.Eclipse ...

    spring+springmvc+mybatis+maven+junit整合

    【JUnit】是Java语言的一个单元测试框架,它使开发者可以方便地编写和运行可重复的测试,确保代码的正确性和稳定性。在集成开发环境中,JUnit测试通常与持续集成工具一起使用,以保证每次代码更改后都能进行自动测试...

    spring4+junit4.8 +多线程TheadTool

    2. **Junit4.8**:JUnit4.8是一个针对Java的单元测试框架,它的主要特性包括注解(@Test)、参数化测试、异常断言等。在测试多线程程序时,JUnit4.8可以帮助我们编写线程安全的测试用例,确保每个线程的行为都符合...

    spring+junit4

    JUnit4则是Java单元测试的重要工具,它简化了编写和执行测试用例的过程。这篇教程将带你了解如何结合Spring与JUnit4进行测试驱动的开发。 首先,Spring框架的核心是IoC(Inversion of Control,控制反转)和DI...

    spring-Test,Junit4 jar,和测试代码

    总结来说,Spring Test和JUnit4的组合为Java开发者提供了一套强大的测试工具,可以方便地对Spring应用进行单元测试和集成测试。通过合理的注解使用和测试设计,我们可以确保代码的质量和系统的稳定性。在实际项目...

    spring MVC junit 单元测试(controller)

    1. **配置测试环境**:引入Spring Test和JUnit相关的依赖,创建一个继承自`AbstractJUnit4SpringContextTests`或`SpringRunner`的测试类。在测试类上使用`@RunWith(SpringRunner.class)`注解启用Spring测试支持,并...

    Mockito+Junit5测试方法实践

    内容概要:参考Mockito官方API文档,实践框架每个特性。 适合人群:Mockito入门人员以及想全面...能学到什么:“Mockito 4.6.0 + Junit 5”的组合编程。 使用建议:使用前安装好Maven及Java即可,推荐使用VSCode编辑。

    Ant+Junit+Svn实现自动单元测试

    【Ant+JUnit+Svn实现自动单元测试】 Ant是一种流行的Java构建工具,它使用XML格式的构建文件(build.xml)来定义一系列的任务,如编译、打包、测试等,以自动化软件开发过程。Ant的主要优点是它的灵活性和可扩展性...

Global site tag (gtag.js) - Google Analytics