小工具      在线工具  汉语词典  dos游戏  css  js  c++  java

Spring Test 整合 JUnit 4 使用总结

Java 额外说明

收录于:52天前

这两天一直在做web开发,发现通过Spring进行对象管理后,测试变得复杂了。因为所有的bean都需要在applicationContext.xml中加载,然后通过@Resource获取。如果每次业务流程快完成的时候都要测试整个业务流程,这样会非常低效而且麻烦。单独写一个测试类太麻烦了。然后我想起Spring有一个测试框架,可以集成JUnit进行测试,于是就拿出来尝试了一下~

废话不多说,我们直接开始教程。

1.添加依赖包

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

2.创建测试源码目录和包

这里,建议创建一个与src同级的源文件目录,因为src中的类是为以后的产品准备的,这里的类只是为了测试。包的名称可以与src中的目录同名。这样,由于是在测试源码目录下,所以不会有冲突,而且名字会一模一样,更容易检索。

3.创建测试类

创建一个类进行测试。推荐名称为“被测试类名+Test”。

  测试类应该继承与 抽象JUnit4SpringContext测试 或 AbstractTransactionalJUnit4SpringContextTests

对于 AbstractJUnit4springcontextTests 和 AbstractTransactionalJUnit4SpringContextTests 类的选择:

如果需要在测试类中使用事务管理(例如测试结果出来后回滚测试内容),可以使用AbstractTransactionalJUnit4SpringTests类。事务管理的使用方法和正常使用Spring事务管理是一样的。这里需要注意的是,如果要使用声明式事务管理,即使用AbstractTransactionalJUnitSpringContextTests类,请将transactionManager bean添加到applicationContext.xml文件中:

<bean id="transactionManager"
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
</bean>

如果不添加上面的bean,会抛出NoSuchBeanDefinitionException,表示No bean name 'transactionManager' is Defined。

4.配置测试类

在类之前添加以下内容来配置applicationContext.xml文件的位置。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")

5. 创建测试方法

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

在测试方法上方添加@Test

6. 通过 JUnit 4 执行

右键单击方法名称并选择“运行方式”→“JUnit 测试”

附录1:总体测试文件

复制代码

/* @(#) UserDaoTest.java
 * 
 * Date: 2012-1-16
 *
 * Author: Rainisic
 */
package com.mb.dao;

import javax.annotation.Resource;

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

import com.mb.entity.User;

/**
 * @author Rainisic
 *
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class UserDaoTest extends AbstractJUnit4SpringContextTests {
    
    @Resource
    private UserDaoInterface userDao;
    
    @Test
    public void saveTest() {
        
        User user1 = new User();
        user1.setUsername("rainisic");
        user1.setPassword("123456");
        user1.setNickName("rainisic");
        user1.setEmail("[email protected]");
        
        User user2 = new User();
        user2.setUsername("admin");
        user2.setPassword("123456");
        user2.setNickName("admin");
        user2.setEmail("[email protected]");
        
        User user3 = new User();
        user3.setUsername("test");
        user3.setPassword("123456");
        user3.setNickName("test");
        user3.setEmail("[email protected]");
        
        userDao.save(user1);
        userDao.save(user2);
        userDao.save(user3);
    }
}

复制代码

OK,现在你可以使用Spring的测试框架了。

转自:http://www.cnblogs.com/rainisic/archive/2012/01/22/Spring_Test_Framework.html

. . .

相关推荐

额外说明

在Eclipse下使用JDBC驱动连接SQL Server 2012数据库时,出现错误信息:no sqljdbc_auth in java.library.path,且驱动程序未配置集成身份验证。

一、错误场景描述: Eclipse4.7  java EE版; SQL Server 2012; JDK 1.8; JDBC 驱动版本mssql-jdbc-6.4.0.jre8.jar 在Eclipse下使用JDBC驱动程序连接SQL Server 20

额外说明

springboot 2.0集成elasticsearch 7.6.2 (集群)关键字高亮显示

小伙伴们,你们好呀,我是老寇,跟我一起学习es 7.6.2  注:请点击我,获取源码 注:借鉴黑马程序员学习es 链接:https://pan.baidu.com/s/1swrV9ffJnmz4S0mfkuBbIw  提取码:1111 视频地址 老寇-e

额外说明

【Unity游戏开发基础】将用户选择的分辨率应用到游戏中

【思路】 上一篇帖子介绍了如何获取系统的分辨率列表,以及如何将这些分辨率显示在用户UI下拉列表框中,并且让用户的列表选择能够正确更新当前选项。这一篇继续讲用户选择后如何将分辨率应用到游戏中。 相比获取和展示,应用这一步的函数要简单直接得多。 【脚本】 p

额外说明

【Unity面试篇】Unity 面试题总结甄选 |Unity性能优化 | ❤️持续更新❤️

前言 关于Unity面试题相关的所有知识点:-‍-2023年Unity面试题大全,共十万字面试题总结【收藏一篇足够面试,持续更新】 为了方便大家可以重点复习某个模块,所以将各方面的知识点进行了拆分并更新整理了新的内容,并对之前的版本中有些模糊的地方进行了

额外说明

Python爬虫之Scrapy框架系列(4)——项目实战【某瓣Top250电影更多信息的获取】

前言: 上篇文章使用Scrapy框架简单爬取并下载了某瓣Top250首页的排名前25个电影的电影名。 太寒酸了,这篇文章咱就来仔细搞一搞,搞到更加详细的信息!!! 目录: 1.分析 2.使用scrapy shell提取电影详细信息 2.1 终端进入scr

额外说明

使用队列实现进程之间的数据共享

如何创建多个进程? 进程之间如何实现通信? 使用队列实现进程之间的数据共享!!! # -*- coding: utf-8 -*- """ __author__ = 孤寒者 """ from multiprocessing import Queue,Pro

额外说明

一键检测 Linux基本系统信息、I/O测试、网速测试— —Superbench

相信好多同学都玩过国外的VPS或服务器,用来搭网站或干一些其他的事,面对的用户流量也绝大多数都是在国内,所以国内节点的访问速度很值得关注。 推荐一个shell脚本,Superbench,它不仅能测试国内几个特定节点的对国外服务器的访问速度,还能显示一些基

额外说明

使用IDA查看汇编代码上下文去辅助排查C++软件异常问题

目录 1、概述 2、汇编指令能最直接反映异常崩溃的原因 2.1、查看异常Code码及对应的异常类型

额外说明

ch4_3高速缓冲存储器

1. cache出现的原因 cpu: 处理速度快, 但是存储容量小, 主存: 处理速度低,但是存储容量大; 为了弥补两者之间的差距,  使用了缓存; 要想充分发挥cache 的能力,  需要保证 cpu 所需要的数据和 指令大多数都能够在cache中获取

额外说明

详细介绍less(css预处理语言)

详细介绍less(css预处理语言) 什么是less less解决什么问题 less相比于css的优点 如何使用less 第一步:创建一个less文件 第二步:引入less文件 第三步,编写less文件(和html一样的结构) 完整代码示例 什么是les

ads via 小工具