文档章节

maven下使用junit对spring进行单元测试_01基本应用

jeffsui
 jeffsui
发布于 2014/10/23 16:45
字数 558
阅读 41111
收藏 26


一、开发环境

maven版本:3.0.5

spring版本:spring3.2.3 release

junit版本:4.11

eclipse版本:3.7.2 r2

jdk版本:1.6 

二、文件清单

pom.xml



<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		
	</properties>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.11</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.mockito</groupId>
			<artifactId>mockito-core</artifactId>
			<version>1.9.5</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>3.2.3.RELEASE</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>3.2.3.RELEASE</version>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.5</version>
				<configuration>
					<skipTests>true</skipTests>
				</configuration>
			</plugin>

		</plugins>
	</build>



ApplicationContext.xml



<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
	<bean id="employee" name="employee" class="com.tfry.spring.Employee" autowire="default">
		<constructor-arg name="age" value="20"></constructor-arg>
		<constructor-arg name="name" value="zhangsan"></constructor-arg>
	</bean>

</beans>



Employee.java



public class Employee {
	private Integer age;
	private String name;
	public Integer getAge() {
		return age;
	}

	public void setAge(Integer age) {
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	
	
	public Employee(Integer age,String name){
		this.age=age;
		this.name=name;
	}
	
	@Override
	public String toString(){
		return "Employee name is "+name+",age is"+age;
		
	}

}



三、主要步骤


1.使用springframework提供的单元测试

包的路径:org.springframework.test.context.junit4下

只需要加入两个注解就可以实现单元测试的功能


@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath*:ApplicationContext.xml"})



@RunWith 大家并不陌生,junit4里用它来做junit加载器


@ContextConfiguration 主要用来加载spring的配置文件路径:是一个字符串数组,可以加载多个spring配置文件

2.基本使用

import static org.junit.Assert.assertEquals;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:ApplicationContext.xml"})
public class EmpolyeeTest {
	@Autowired
	ApplicationContext ctx;
	
	@Test
	public void testEmployee(){
		Employee employee =(Employee) ctx.getBean("employee");
		assertEquals("zhangsan",employee.getName());
	}

}



3.封装基于AbstractJUnit4SpringContextTests的测试基类

SpringTest.java

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath*:ApplicationContext.xml"})
public class SpringTest extends AbstractJUnit4SpringContextTests {
	
	
   public <T> T getBean(Class<T> type){
   	return applicationContext.getBean(type);
   }
   
   public Object getBean(String beanName){
   	return applicationContext.getBean(beanName);
   }
   protected ApplicationContext getContext(){
   	return applicationContext;
   }



然后其他测试类只需要继承该类即可,可以省去每次都要绑定Application对象。

下一步就是在webapp中如何进行单元测试和如何结合hibernate等ORMapping框架进行单元测试。

最后附上源码

源码地址

© 著作权归作者所有

jeffsui

jeffsui

粉丝 294
博文 267
码字总数 73964
作品 0
大连
QA/测试工程师
私信 提问
加载中

评论(3)

林中轩
林中轩
能重新给下源码么?百度云盘地址失效了。谢谢
t
tommwq
79
菠萝啊哈哈
菠萝啊哈哈
验证可用,谢谢83
Java Web(5) Spring 下使用Junit4 单元测试

如何在不启动Tomcat服务器的情况下对,Dao这些不依赖使用Servlet API的类来进行单元测试呢? 其实在Spring框架体系中,已经有一套自己的测试代码,其中就是依赖使用Junit来进行测试 ,不需要...

Jagery
2015/11/15
2.1K
0
SpringFramework4系列之SpringTest:(一)Spring4整合Junit

构建Spring 应用之后呢,编写单元测试就显得比较麻烦了,因为绝大部分的类都交给了spring托管了,需要人为的去加载spring的配置文件等等,或者需要编码去从spring 哪里得到某个类的实例等。 ...

Garrry
2015/07/13
347
0
springmvc 项目完整示例02 项目创建-eclipse创建动态web项目 配置文件 junit单元测试

包结构 所需要的jar包直接拷贝到lib目录下 然后选定 build path 之后开始写项目代码 配置文件 ApplicationContext.xml

noteless
2016/02/24
0
0
Spring Boot(十二)单元测试JUnit

一、介绍 JUnit是一款优秀的开源Java单元测试框架,也是目前使用率最高最流行的测试框架,开发工具Eclipse和IDEA对JUnit都有很好的支持,JUnit主要用于白盒测试和回归测试。 白盒测试:把测试...

王磊的博客
2018/11/05
263
0
补习系列-springboot 单元测试之道

目标 了解 单元测试的背景 了解如何 利用 springboot 实现接口的测试 了解如何 利用 mokito 做代码的 mock 一、About 单元测试 单元测试其实是一种廉价的技术,是由开发者创建运行测试代码,...

美码师
2018/08/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

The server time zone value 'EDT' is unrecognized or represents more than one time zone.

2019-10-14 18:07:43.714 ERROR 74363 --- [Druid-ConnectionPool-Create-1855026648] com.alibaba.druid.pool.DruidDataSource : create connection SQLException, url: jdbc:mysql://10.30......

yizhichao
21分钟前
7
0
html加载顺序以及影响页面二次渲染额的因素

本文转载于:专业的前端网站➱html加载顺序以及影响页面二次渲染额的因素 浏览器请求发往服务器以后,返回HTML页面,页面内容开始渲染,具体的执行顺序为: 1. 浏览器开始载入html代码,发现<...

前端老手
24分钟前
7
0
BeginnersBook JSP、JSTL、Servlet 教程

来源:ApacheCN BeginnersBook 翻译项目 译者:飞龙 协议:CC BY-NC-SA 4.0 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 请您勇敢地去翻译和改进翻译。虽然我们追求卓越,但我们并...

ApacheCN_飞龙
36分钟前
5
0
Handler和内部类的正确用法

PS:本文摘抄自《Android高级进阶》,仅供学习使用   Android代码中涉及线程间通信的地方经常会使用Handler,典型的代码结构如下。 1 2 3 4 5 6 7 8 9 public class HandlerActivity exten...

shzwork
36分钟前
7
0
centos 7 安装mysql5.6rpm格式

centos 7 安装mysql5.6rpm格式 1查看是否安装了mysql rpm -qa|grep -i mysql 如果安装了请卸载:rpm -e --nodeps MySQL... 2、没有安装则进行如下操作 下载mysql rpm tar包 https://dev.mysq...

Archer99
36分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部