博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringJunit4 进行单元测试
阅读量:5794 次
发布时间:2019-06-18

本文共 3340 字,大约阅读时间需要 11 分钟。

前言:
  在做WEB项目时,我们写好了一个Dao和Service后,接下来就是要进行 ,测试的时候还要等到Spring容器全部加载完毕后才能进行,然后通过拿到ApplicationContext对象来gerBean()方法进行测试,或者更笨点的就是写一个控制器,在浏览器敲入地址进行deBug跟踪测试,这样不仅效率低,而且收效甚微。
  本章来讲解spring融合Junit4进行单元测试。
  本章的测试源目录和包是紧随上一章节的源代码。点我查看上一章节
  
准备:
  jar包支持(上一章节代码里面已给出)
  测试的源代码和包结构(同上)
  注意:测试类 包路径最好位于src根目录下,编译后为calsses文件夹下,方便其他路径的书写
 
 实例代码演示:
  ****************复制该类至上一章节test包下即可************注释部分我尽可能详细讲解****************
UserServiceTest
package test;
import  .util.List;
import javax.annotation.Resource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;
import com.spring.jpa.user.User;
import com.spring.jpa.user.UserService;
/** 声明用的是Spring的测试类 **/
@RunWith(SpringJUnit4ClassRunner.class)
/** 声明spring主配置文件位置,注意:以当前测试类的位置为基准,有多个配置文件以字符数组声明 **/
@ContextConfiguration(locations={"../spring-config/spring-jpa.xml"})
/** 声明使用事务,不声明spring会使用默认事务管理 **/
@Transactional
/** 声明事务回滚,要不测试一个方法数据就没有了岂不很杯具,注意:插入数据时可注掉,不让事务回滚 **/
@TransactionConfiguration(transactionManager="transactionManager",defaultRollback=true)
public class UserServiceTest {
@Resource
private UserService userService;
@Test // 新增(来个20条数据) 注意新增的时候先把事务注掉,要不会回滚操作
public void testSaveUser() {
for(int i=0; i<20; i++){
User user = new User();
user.setUserName("system");
user.setPassWord(i+"system");
userService.saveUser(user);
}
}
@Test    // 删除  有事务回滚,并不会真的删除
public void testDeleteUser() {
userService.deleteUser(27L);
}
@Test    // 查询所有
public void testFindAllUser() {
List<User> users = userService.findAllUsers();
System.out.println(users.size());
}
@Test    // 查询分页对象
public void testFindAllUserByPage() {
/**
*  创建一个分页对象   (注意:0代表的是第一页,5代表每页的大小,后两个参数不写即为默认排序)
*  Direction:为一个枚举类,定义了DESC和ASC排序顺序
*  id:结果集根据id来进行DESC降序排序
*  想自己实现的话,最好继承他这个类,来定义一些个性的方法
*/
PageRequest request = new PageRequest(1, 4, Direction.DESC, "id");
Page<User> users = userService.findAllUserByPage(request);
// 打印分页详情
System.out.println("查询结果:共"+users.getTotalElements()+"条数据,每页显示"+users.getSize()+"条,共"+users.getTotalPages()+"页,当前第"+(users.getNumber()+1)+"页!");
// 打印结果集的内容
System.out.println(users.getContent());
}
// main 用于查看spring所有bean,以此可以检测spring容器是否正确初始化
public static void main(String[] args) {
// 我这里使用的是绝对路径,请根据你项目的路径来配置(相对路径挖不出来-OUT了)
String []  path = {"E:/moviework/springJpa/src/spring-config/spring-jpa.xml"};
ApplicationContext ac = new FileSystemXmlApplicationContext(path);
String[] beans = ac.getBeanDefinitionNames();
for(String s : beans) {
System.out.println(s);    // 打印bean的name
}
}
}
测试testFindAllUserByPage()方法控制台输出sql语句和信息:
  完事,就是这么简单,和普通java类的测试多的只是注解的东西。原理还是一样的,并且它支持事务的回滚,不用担心在测试的时候对数据进行破坏。只有用了你才能体会原来Spring 框架的 WEB项目测试也可以这么的简洁。
  数据都是基于上一章节来的,本章节不再贴出,项目打包的下载地址也在上一章节。点我前往上一章节
  
总结:
  平时在编写test类的时候,写在src目录下更方便阅读和代码的编写
  遵守测试规范,测试类方法名为:test + 原方法名首字母大写
  注意@ContextConfiguration注解路径的引用
最新内容请见作者的GitHub页:http://qaseven.github.io/

转载地址:http://csdfx.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
DHCP中继数据包互联网周游记
查看>>
oracle学习笔记-第四篇
查看>>
我的友情链接
查看>>
IBM MQ通道
查看>>
我的友情链接
查看>>
ichartjs的使用
查看>>
Arduino可穿戴开发入门教程Arduino开发环境介绍
查看>>
解决 squid The basicauthenticator helpers are crashing too rapidly, need help
查看>>
XamarinEssentials教程首选项Preferences判断项目是否存在
查看>>
Linux 添加Nginx 到 service 启动 (完整篇)
查看>>
vmware通过地址连接SSH secureCRT解决缓慢的速度连接
查看>>
runtime
查看>>
[转载]安装完 MySQL 后必须调整的 10 项配置
查看>>
SpringMVC拦截器(资源和权限管理)
查看>>
laravel的模板继承的使用
查看>>
我的友情链接
查看>>
FireEye:雪人行动针对美国海外战争退伍军人网站
查看>>
java.util.date 转为 java.sql.date
查看>>
oracle使用dblink跨库查询的例子
查看>>