java dao 单元测试_Spring Service、Dao进行Junit单元测试
pring对Controller、Service、Dao进行Junit单元测试总结
所有用Junit进行单元测试,都需要下面的配置
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
applicationContext.xml 是整个项目的Spring的配置文件。包括数据源配置、MVC配置和各种Bean的注册扫描。如果你是多个文件,就用都好隔开写多个,像这样
{ "classpath:applicationContext.xml","classpath:servlet-context.xml"}
1.Dao层的单元测试。
将*Mapper接口注入进来,直接调用即可。加上@Transactional 事物管理注解以后,单元测试执行完后会撤销对数据库的修改。想看增删改的结果的话,可以把这个注解先注释。
~~~java
package testDao;
import com.susq.mbts.dao.UserMapper;
import com.susq.mbts.domain.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
/**
* Created by susq on 2017-5-3.
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {“classpath:applicationContext.xml”})
@Transactional
public class DaoTests {
@Autowired
private UserMapper userMapper;
@Test
public void testSelect() {
User userInfo = userMapper.selectByPrimaryKey(1L);
System.out.println(userInfo);
}
@Test
public void insert(){
User user = new User();
// user.setId(5L);
user.setAge(“9”);
user.setName(“王五”);
user.setSex(“M”);
user.setCreateTime(new Date());
userMapper.insert(user);
}
@Test
public void testUpdate() {
User user = new User();
user.setId(5L);
user.setAge("999");
user.setName("王五");
user.setSex("M");
user.setCreateTime(new Date());
userMapper.updateByPrimaryKey(user);
}
@Test
public void testDelete() {
userMapper.deleteByPrimaryKey(7L);
}
}
2. Service层的单元测试与Dao层基本一致,把Service注入进来调用就行。
~~~java
package testDao;
import com.susq.mbts.domain.User;
import com.susq.mbts.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* Created by susq on 2017-5-8.
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {“classpath:applicationContext.xml”})
public class Sertest {
@Autowired
private UserService userService;
@Test
public void selectUserTest() {
User u = userService.selectUser(1);
System.out.println(u);
}
}
3. Controller层的单元测试
一种是把Controller的Bean注入进来,调里面的方法,这很显然比较扯淡,连Url都没经过,只测了方法。另一种是使用MockMvc模拟通过url的接口调用。MockMvc是SpringMVC提供的Controller测试类,每次进行单元测试时,都是预先执行@Before中的setup方法,初始healthArticleController单元测试环境。
注意:一定要把待测试的Controller实例进行MockMvcBuilders.standaloneSetup(xxxxController).build(); 否则会抛出无法找到@RequestMapping路径的异常:No mapping found for HTTP request with URI [/cms/app/getArticleList] in DispatcherServlet
package testDao;
import com.susq.mbts.controller.UserController;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
/**
* Created by susq on 2017-5-8.
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class ConTest {
@Autowired
private UserController userController;
private MockMvc mockMvc;
@Before
public void setup(){
mockMvc = MockMvcBuilders.standaloneSetup(userController).build();
}
@Test
public void Ctest() throws Exception {
ResultActions resultActions = this.mockMvc.perform(MockMvcRequestBuilders.post("/show_user3").param("id", "1"));
MvcResult mvcResult = resultActions.andReturn();
String result = mvcResult.getResponse().getContentAsString();
System.out.println("=====客户端获得反馈数据:" + result);
// 也可以从response里面取状态码,header,cookies...
// System.out.println(mvcResult.getResponse().getStatus());
}
}
java dao 单元测试_Spring Service、Dao进行Junit单元测试相关推荐
- [转]Java Web基础——Action+Service +Dao三层的功能划分
原文地址:http://blog.csdn.net/inter_peng/article/details/41021727 参考来源:http://www.xuebuyuan.com/2153333. ...
- java单元测试算初级_Java____Eclipse下JUnit单元测试(初级)
给大家分享一个链接希望对你们有帮助 http://blog.csdn.net/huangbiao86/article/details/6709742 今天看图片命名唯一的策略时看到有个大大用JUnit ...
- 七、Web服务器——Junit单元测试 反射 注解学习笔记
今日内容 1. Junit单元测试 2. 反射 3. 注解 Junit单元测试: * 测试分类:1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值.2. 白盒测试:需要写代码的.关注程 ...
- junit单元测试,反射,注解
今日内容 1. Junit单元测试 2. 反射 3. 注解 Junit单元测试: * 测试分类:1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值.2. 白盒测试:需要写代码的.关注程 ...
- JUnit单元测试、网络编程
JUnit单元测试.网络编程 今日内容 JUnit单元测试 网络编程 第一章 JUnit单元测试 1.简介 Junit是什么 * Junit是Java语言编写的第三方单元测试框架(工具类) * 类库 ...
- Vertx之Junit单元测试
介绍 Vertx-junit5该模块为使用 JUnit 5 编写 Vert.x 测试提供集成和支持 1. maven项目依赖 <dependencies><dependency> ...
- 如何使用 Spring 整合 junit 单元测试
文章目录 1.测试类中的问题和解决思路 1.1.问题 1.2.解决思路分析 2.配置步骤 2.1.第一步:拷贝整合 junit 的必备 jar 包到 lib 目录 2.2.第二步:使用@RunWith ...
- java事务 Dao层_spring事务到底用于service层还是dao层
Spring事务为业务逻辑进行事务管理,保证业务逻辑上数据的原子性. 事务得根据项目性质来细分:事务可以设置到三个层面(dao层.service层和web层). 第一:web层事务,这一般是针对那些安 ...
- [转]JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分
首先这是现在最基本的分层方式,结合了SSH架构.modle层就是对应的数据库表的实体类.Dao层是使用了Hibernate连接数据库.操作数据库(增删改查).Service层:引用对应的Dao数据库操 ...
最新文章
- SAP R/3系统的R和3分别代表什么含义,负载均衡的实现原理
- python流程控制-python 流程控制语句
- java+JBroFuzz对restful api进行fuzz测试
- POJ 3855 计算几何·多边形重心
- ROM微型计算机是什么,在微型计算机中,ROM是().
- TensorFlow学习笔记(十一)读取自己的数据进行训练
- bash的快捷键、特殊参数、历史命令、相关文件
- Linux安装php-7.0.16,完成php和apache的配置
- 技术支持好跳槽吗_计算机实施、IT技术支持、技术顾问、成功客户经理岗位怎么样?...
- vm安装win xp镜像遇到的安装问题之一
- 泛微oa ecology8.0创建工作流程示例
- SAP ABAP——内表(三)【工作区与表头】
- SIM卡在手机中的主要作用
- 一篇总览前端和后端工具对应关系
- 【Unity3d】 制作游戏主菜单 GUI
- Java视频教程百度网盘,Java精选面试Spring全家桶
- 从零开始设计开发优惠券系统
- 网易我的世界服务器正在维护,网易《我的世界》Hypixel中国版服务器将停止运营...
- 亚丁号云控之云控设备
- Ext 4 概述(二)之Ext Core
热门文章
- ARP 地址解析协议
- PopupWindow和AlertDialog区别
- 部署到gcp_GCP 网络系统Andromeda --- 概述篇
- 【R】语言第五课----画图
- 异常检测算法之LOF
- ideaspringboot项目上传服务器_PHP中使用 TUS 协议来实现可恢复文件上传
- python中函数的参数传递(传值还是传引用)
- win服务器文件夹权限设置密码,win服务器 文件夹权限设置
- LeetCode20——Valid Parentheses(括号匹配问题,使用栈的知识)
- php处理form多文件上传,ajax利用FormData、FileReader实现多文件上传php获取