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单元测试相关推荐

  1. [转]Java Web基础——Action+Service +Dao三层的功能划分

    原文地址:http://blog.csdn.net/inter_peng/article/details/41021727 参考来源:http://www.xuebuyuan.com/2153333. ...

  2. java单元测试算初级_Java____Eclipse下JUnit单元测试(初级)

    给大家分享一个链接希望对你们有帮助 http://blog.csdn.net/huangbiao86/article/details/6709742 今天看图片命名唯一的策略时看到有个大大用JUnit ...

  3. 七、Web服务器——Junit单元测试 反射 注解学习笔记

    今日内容 1. Junit单元测试 2. 反射 3. 注解 Junit单元测试: * 测试分类:1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值.2. 白盒测试:需要写代码的.关注程 ...

  4. junit单元测试,反射,注解

    今日内容 1. Junit单元测试 2. 反射 3. 注解 Junit单元测试: * 测试分类:1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值.2. 白盒测试:需要写代码的.关注程 ...

  5. JUnit单元测试、网络编程

    JUnit单元测试.网络编程 今日内容 JUnit单元测试 网络编程 第一章 JUnit单元测试 1.简介 Junit是什么 * Junit是Java语言编写的第三方单元测试框架(工具类) * 类库 ...

  6. Vertx之Junit单元测试

    介绍 Vertx-junit5该模块为使用 JUnit 5 编写 Vert.x 测试提供集成和支持 1. maven项目依赖 <dependencies><dependency> ...

  7. 如何使用 Spring 整合 junit 单元测试

    文章目录 1.测试类中的问题和解决思路 1.1.问题 1.2.解决思路分析 2.配置步骤 2.1.第一步:拷贝整合 junit 的必备 jar 包到 lib 目录 2.2.第二步:使用@RunWith ...

  8. java事务 Dao层_spring事务到底用于service层还是dao层

    Spring事务为业务逻辑进行事务管理,保证业务逻辑上数据的原子性. 事务得根据项目性质来细分:事务可以设置到三个层面(dao层.service层和web层). 第一:web层事务,这一般是针对那些安 ...

  9. [转]JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分

    首先这是现在最基本的分层方式,结合了SSH架构.modle层就是对应的数据库表的实体类.Dao层是使用了Hibernate连接数据库.操作数据库(增删改查).Service层:引用对应的Dao数据库操 ...

最新文章

  1. SAP R/3系统的R和3分别代表什么含义,负载均衡的实现原理
  2. python流程控制-python 流程控制语句
  3. java+JBroFuzz对restful api进行fuzz测试
  4. POJ 3855 计算几何·多边形重心
  5. ROM微型计算机是什么,在微型计算机中,ROM是().
  6. TensorFlow学习笔记(十一)读取自己的数据进行训练
  7. bash的快捷键、特殊参数、历史命令、相关文件
  8. Linux安装php-7.0.16,完成php和apache的配置
  9. 技术支持好跳槽吗_计算机实施、IT技术支持、技术顾问、成功客户经理岗位怎么样?...
  10. vm安装win xp镜像遇到的安装问题之一
  11. 泛微oa ecology8.0创建工作流程示例
  12. SAP ABAP——内表(三)【工作区与表头】
  13. SIM卡在手机中的主要作用
  14. 一篇总览前端和后端工具对应关系
  15. 【Unity3d】 制作游戏主菜单 GUI
  16. Java视频教程百度网盘,Java精选面试Spring全家桶
  17. 从零开始设计开发优惠券系统
  18. 网易我的世界服务器正在维护,网易《我的世界》Hypixel中国版服务器将停止运营...
  19. 亚丁号云控之云控设备
  20. Ext 4 概述(二)之Ext Core

热门文章

  1. ARP 地址解析协议
  2. PopupWindow和AlertDialog区别
  3. 部署到gcp_GCP 网络系统Andromeda --- 概述篇
  4. 【R】语言第五课----画图
  5. 异常检测算法之LOF
  6. ideaspringboot项目上传服务器_PHP中使用 TUS 协议来实现可恢复文件上传
  7. python中函数的参数传递(传值还是传引用)
  8. win服务器文件夹权限设置密码,win服务器 文件夹权限设置
  9. LeetCode20——Valid Parentheses(括号匹配问题,使用栈的知识)
  10. php处理form多文件上传,ajax利用FormData、FileReader实现多文件上传php获取