单元测试代码:SpringTest+JUnit

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

/*** JUnit单元测试父类,配置了Spring的基础环境。 <br/>* 可以作为Controller、Service、Dao单元测试的父类。* * @author leiwen@fansunion.cn*/
public class JUnitTestBase {public static XmlWebApplicationContext context = null;private static HandlerMapping handlerMapping;private static HandlerAdapter handlerAdapter;// /public static String[] CONFIG_FILES = { "classpath:spring-*.xml" };// public static String[] configs = { "file:src/main/resources/spring-*.xml"// };public static String[] CONFIG_FILES = { "file:src/main/resources/spring-*.xml" };/*** 读取spring配置文件,初始化上下文。*/@BeforeClasspublic static void setUp() {System.out.println("Test start...");context = new XmlWebApplicationContext();context.setConfigLocations(CONFIG_FILES);MockServletContext msc = new MockServletContext();context.setServletContext(msc);context.refresh();msc.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,context);handlerMapping = (HandlerMapping) context.getBean(DefaultAnnotationHandlerMapping.class);handlerAdapter = (HandlerAdapter) context.getBean(context.getBeanNamesForType(AnnotationMethodHandlerAdapter.class)[0]);}// 执行request对象请求的actionpublic ModelAndView excuteAction(HttpServletRequest request,HttpServletResponse response) throws Exception {// 这里需要声明request的实际类型,否则会报错request.setAttribute(HandlerMapping.INTROSPECT_TYPE_LEVEL_MAPPING, true);HandlerExecutionChain chain = handlerMapping.getHandler(request);Object handler = chain.getHandler();final ModelAndView model = handlerAdapter.handle(request, response,handler);return model;}@AfterClasspublic static void tearUp() {System.out.println("Test end!");}}//测试Controller的2种方法/*** CampaignGroupController单元测试。* * @author leiwen@fansunion.cn*/
public class FansUnionControllerTestextends JUnitTestBase {@Testpublic void prevAddCampaignGroup() throws Exception {MockHttpServletRequest request = new MockHttpServletRequest();MockHttpServletResponse response = new MockHttpServletResponse();String requestURI = "/campaignGroup/prevAdd";request.setRequestURI(requestURI);request.setMethod("POST");final ModelAndView mav = this.excuteAction(request, response);Assert.assertEquals("createCampaignGroup", mav.getViewName());}@Testpublic void prevAddCampaignGroup2() throws Exception {CampaignGroupController userController = context.getBean(CampaignGroupController.class);MockMvc mockMvc = MockMvcBuilders.standaloneSetup(userController).build();ResultActions perform = mockMvc.perform(MockMvcRequestBuilders.post("/campaignGroup/prevAdd"));ResultActions andExpect = perform.andExpect(MockMvcResultMatchers.status().is(200));andExpect.andExpect(MockMvcResultMatchers.view().name("createCampaignGroup"));}}----需要配置2个bean,测试Controller需要用到<beanclass="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"></bean><beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"></bean>测试Service(Dao类似)/*** 这种方式 的单元测试,不需要重复指定 资源文件,减少重复。 麻烦的地方在于,需要手动获取bean。* * @author leiwen@fansunion.cn*/
public class FansUnionServiceTest extends JUnitTestBase {private static CampaignGroupService campaignGroupService = context.getBean(CampaignGroupService.class);// 测试add,remove,update方法的时候,已经测试了find?@Testpublic void addCampaignGroup() {CampaignGroup cg = buildOneGroup();campaignGroupService.add(cg);CampaignGroup dbCampaignGroup = campaignGroupService.find(cg.getId());Assert.assertEquals(cg, dbCampaignGroup);campaignGroupService.delete(cg.getId());}基于注解的测试/*** * 基于注解的单元测试。* * @author leiwen@fansunion.cn*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:spring-mvc-context.xml","classpath:spring-common-context.xml" })
public class FansUnionServiceTestWithAnnotation {@Autowiredprivate CampaignGroupService campaignGroupService;/*** 根据campaignId获取campaignGroup的name集合<br>* 测试场景:<br>* */@Testpublic void testListCampaignGroupNameByCampaignId(){System.out.println("**********");System.out.println(campaignGroupService.listCampaignGroupNameByCampaignId(1005899));}}

参考资料:http://lohasle.iteye.com/blog/1617929

http://jiuyuehe.iteye.com/blog/1882424

 

 

 

转载于:https://my.oschina.net/jiutianniao/blog/400245

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql类 php100_php mysql 类

1 <?php2 /**3 * MySQL 数据库操作工具类, 方便数据库操作.4 * 示例见底部注释.5 * author: fuck me every day6 */7 class Mysql{8 var $conn;9 var $query_list array();10 public $query_count 0;1112 public function __construct($c){13 if(!isset($c[port])){14 $c…

SQL Server 索引和表体系结构(三)

SQL Server 索引和表体系结构&#xff08;三&#xff09; 原文:SQL Server 索引和表体系结构&#xff08;三&#xff09;包含列索引 概述 包含列索引也是非聚集索引&#xff0c;索引结构跟聚集索引结构是一样&#xff0c;有一点不同的地方就是包含列索引的非键列只存储在叶子节…

简单了解线程和进程、多进程和多线程、并发和并行的区别

一&#xff1a;线程与进程 1.概念 线程&#xff1a;是程序执行流的最小单元&#xff0c;是系统独立调度和分配CPU&#xff08;独立运行&#xff09;的基本单位。 进程&#xff1a;是资源分配的基本单位。一个进程包括多个线程。 2.区别&#xff1a; 1.线程与资源分配无关&…

jdbc mysql demo_JDBC_demo:java连接mysql过程

1.任何数据库驱动程序都提供对java.sql.Driver接口的驱动类&#xff0c;mysql-connector-java-5.1.39-bin.jar中Driver&#xff1a;packagecom.mysql.jdbc;importjava.sql.DriverManager;importjava.sql.SQLException;public class Driver extendsNonRegisteringDriverimplemen…

Java中发邮件的6种方法

2019独角兽企业重金招聘Python工程师标准>>> 1.官方标准JavaMail Sun&#xff08;Oracle&#xff09;官方标准&#xff0c;功能强大&#xff0c;用起来比较繁琐。 官方资料&#xff1a;http://www.oracle.com/technetwork/java/javamail/index.html 2.第三方实现…

查询字符串某个字符的个数

select len(05011045)-len(replace(05011045,0,))转载于:https://www.cnblogs.com/zwc-blog/p/3787888.html

假定Csomething是一个类,执行下面这些语句后,内存里创建了几个Csomething对象

假定Csomething是一个类&#xff0c;执行下面这些语句后&#xff0c;内存里创建了几个Csomething对象 Csomething a(); Csomething b(2); Csomething c[3]; Csomething &ra b; Csomething d b; Csomething *pA c; Csomething *p new Csomething(4); Csomething a();/…

用mongo实现mysql视图_浅谈 MongoDB 的视图

2018 年 9 月 18 日&#xff0c;由 Robert Gravelle 撰写在关系数据库中&#xff0c;视图是由查询定义的可搜索数据子集。视图有时被称为“虚拟表”&#xff0c;因为它们不存储数据&#xff0c;但可以像表一样被查询。MongoDB 最近在版本 3.4 中引入了视图。在今天的文章中&…

将DataTable 数据插入 SQL SERVER 数据库

原文:将DataTable 数据插入 SQL SERVER 数据库 以下提供3中方式将DataTable中的数据插入到SQL SERVER 数据库&#xff1a;一&#xff1a;使用sqlcommand.executenonquery()方法插入 foreach (DataRow datarow in datatable.Rows) { string sql "INSERT INTO [Table_1] ([…

如何在WinForm中发送HTTP请求

Winform窗体中发送HTTP请求手工发送HTTP请求主要是调用 System.Net的HttpWebResponse方法手工发送HTTP的GET请 求: 1 string strURL "http://localhost/Play/CH1/Service1.asmx/doSearch?keyword";2 strURL this.textBox1.Text;3 System.Net.HttpWebRequest reques…

mysql两列取小_mysql – 我想获取两列特定列之间的列值

如果我理解正确,我认为你不能用一个查询来做到这一点.您可以尝试使用以下内容.添加了对代码的评论.SET schema database_name_here; -- Database nameSET table table1; -- Table nameSET startColumn column_start;SET endColumn column_end;-- First get the position of…

struts2.1.6教程二、struts.xml配置及例程

1.配置文件的优先级 在struts2中一些配置&#xff08;比如常量&#xff09;可以同时在struts-default.xml&#xff08;只读性&#xff09;&#xff0c;strtus-plguin.xml&#xff08;只读性&#xff09;&#xff0c;struts.xml&#xff0c;struts.properties和web.xml文件中配置…

Linux 压缩和解压命令

tar.gz&#xff1a; 压缩&#xff1a; tar -zcvf 压缩后的包名.tar.gz 压缩的目录 zcvf &#xff1a; z 压缩成gz的后缀 c 创建压缩包 t 查看压缩包内容 v 显示压缩过程(输出压缩的文件) f 固定参数 后边接压缩包 解压&#xff1a; tar -zxvf 压缩包名称.tar.gz [-C 目…

spring注解配置quartz

常规配置quartz可以参考我的另外一篇博文:http://www.cnblogs.com/yangzhilong/p/3349116.html spring配置文件里增加&#xff1a; 命令空间&#xff1a; http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd 配…

java char 空_2020重新出发,JAVA入门,数据类型

数据类型通过上一节&#xff0c;明白了变量就是申请内存来存储值&#xff0c;即当创建变量的时候&#xff0c;需要在内存中申请空间。内存管理系统根据变量的类型为变量分配存储空间&#xff0c;确定了变量的类型&#xff0c;即确定了数据需分配内存空间的大小&#xff0c;数据…

域控制器

1. Server01上创建域控制器&#xff1a;域名uec.com DNS和本机在同一台机器上。2. Server02 创建现有域的额外控制器&#xff0c;同时在本机生成DNS区域&#xff0c;检查DC间复制状态。卸载域控制器&#xff1a;域的备份还原:实例: 域的备份 对当前UEC.COM的域控制器Ser…

u-boot启动参数命令格式

指令功能nand info显示可使用的 Nand Flashnand device [dev]显示或设定当前使用的 Nand Flashnand read addr off sizeNand Flash 读取命令&#xff0c;从 Nand 的 off 偏移地址处读取 size 字节的数据到 SDRAM 的 addr地址。nand write addr off sizeNand Flash 烧写命令&…

iOS7下隐藏status bar的详细研究

info.plist文件中&#xff0c;View controller-based status bar appearance项设为YES&#xff0c;则View controller对status bar的设置优先级高于application的设置。为NO则以application的设置为准&#xff0c;view controller的prefersStatusBarHidden方法无效&#xff0c;…

产品经理应该mysql_数据库对产品经理的重要性

产品经理在设计产品的过程中基本上都在和数据打交道&#xff0c;对产品数据存储结构设计的了解可以帮助产品经理建立产品的数据模型&#xff0c;数据模型就是数据在服务器中存储结构的设计&#xff0c;功能层上看到的是一个个根据用户场景设计的功能&#xff0c;但是实际上在数…

实验一报告

北京电子科技学院&#xff08;BESTI&#xff09; 实 验 报 告 课程&#xff1a;Java   班级&#xff1a; 1352    姓名&#xff1a;谈愈敏   学号&#xff1a;20135220 成绩&#xff1a;   指导教师&#xff1a;娄嘉鹏       实验日期…