02.基于IDEA+Spring+Maven搭建测试项目--详细过程
一、背景介绍
1.1公司相关技术
- Git:是一款免费的开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目,方便多人集成开发
- Maven:是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具,同时还提供了高级项目管理工具
- Jira:是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域
- Dubbo:是阿里巴巴公司一个开源的分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,内部系统间同步请求使用,可以和spring框架无缝集成
- Zookeeper:分布式环境下的协调工具。开源的分布式应用程序协调服务,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等
- MQ:消息队列,应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,无需专用连接来链接它们。分为rabbitMq、kafkaMq,分布式环境下的异步消息系统,解决系统相互依赖的耦合情况
- Redis:非关系型数据库的一种,可以当做缓存使用,减少应用系统对数据库的访问提高系统处理速度。开源,支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。支持主从同步
- Nginx:http协议的分布式协调系统。轻量级、高性能的HTTP和反向代理服务器及电子邮件(IMAP/POP3)代理服务器。占有内存少,并发能力强、负载均衡
- FastDFS:开源的轻量级分布式文件管理系统,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,主要解决大容量存储和负载均衡的问题
- Jenkins:项目自动发布工具,持续集成,开源
- IDEA:全称IntelliJ IDEA,Java语言开发的集成环境之一,业界公认最好的IDE之一
1.2两类接口测试
公司主要面对B端客户,对外提供的产品主要是接口,所以测试人员在测试过程中主要测试对象是接口。根据实际工作中所见,目前主要有两大类接口:
- 基于HTTP协议的接口,以对外提供给商户为主(会涉及到加密和解密)
- 基于RPC框架的Dubbo接口,以内部系统间调用为主
针对上述两类接口,本文总结了当前公司内部常用的一种测试方式:即搭建测试项目,通过代码来进行测试。好处有四:
- 针对HTTP协议接口,加解密方便,调用灵活,需要时只调用相关方法即可
- 快速增加Dubbo类接口测试脚本(目前市场上能够进行该类接口的测试工具需要一定的二次开发)
- 长期使用java代码测试,有利于提高QA人员技术思路、技术功底和技术视野
- 便于后期实现接口自动化测试
二、准备工作
2.1安装准备
搭建测试项目前需要安装一些软件:
集成开发环境IDEA(本文以IDEA为例,也可使用eclipse等其他IDE,实现方法类似)
Java开发包:JDK,安装并调试成功
配置项目管理工具:Maven,安装并配置好环境变量,调试成功。配置文件参考https://www.cnblogs.com/xiuxingzhe/p/9250838.html
2.1技术准备
搭建过程中,用到如下知识:
- Java
- Spring
- Maven
- Dubbo
- Zookeeper
不要求完全掌握,但需要了解其作用和简单用法,可参照1.1章节介绍。具体细节请通过其他途径深入了解
三、具体搭建
3.1 基础搭建
3.1.1 新建项目
启动IDEA,选择Create New
Project
3.1.2 项目原型选择
左侧选择Maven
Project SDK:选择本机安装的java,如果如果Project SDK是None,则通过New本地安装Java的根目录,如笔者Java安装根目录为:D:\Program Files (x86)\Java
勾选:Create
from archetype,
选择原型:org.apache.maven.archetypes:maven-archetype-webapp,点击Next
说明:这里选择的是从原型创建一个Web动态项目
3.1.3 确定项目坐标
确定当前项目的maven坐标:GroupId和ArtifactId,确保GroupId+ArtifactId唯一
填写好之后,点击Next
3.1.4 Maven项目配置
Maven home directory:选择本机安装的Maven版本
User settings file:maven的配置文件,默认是本机个人当前用户.m2目录,如笔者默认目:C:\Users\BF100400\.m2\目录下,可更改为自己实际放置的目录,也可把setting.xml配置文件拷贝至默认目录
Local repository:本地存放jar包的仓库,该路径是读取User settings file配置文件中的<localRepository>配置,只要User settings
file选择正确,该项可不用管
建议增加键值配置参数archetypeCatalog=internal,如果不添加此参数,在maven生成骨架的时候将会非常慢,甚至直接卡主
具体意思:archetypeCatalog表示插件使用的archetype元数据,不加这个参数时默认为remote,local,即中央仓库archetype元数据,由于中央仓库的archetype太多了,所以导致很慢,指定internal来表示仅使用内部元数据
配置好之后点击Next
3.1.5 设置项目名称
设置Project name 和 Module
name,以及项目放置的位置location,名字见名知义即可。设置好之后,点击Finish
说明:如果创建的项目名称没有对应的目录,可能就会弹出如图所示提示框。不用理会,点击OK后会自动在本地创建对应目录。(也可在创建之前就在本地想要保存的目录下创建文件夹,和项目名称对应起来,这样就不会出现该提示)
3.1.6 Maven自动导入设置
首次创建项目,加载相对较慢,因为有很多相关文件和插件需要下载。无需着急,慢慢等待其下载完成。否则自动创建的项目没有src目录
项目加载完成后,点击下Enable
Auto-Import,这样后续maven的pom.xml有配置更改后会自动刷新
3.1.7 增加测试目录
因测试人员基本只写测试代码,所以无需配置tomcat服务器(如需可自行搜索方法)
在src目录下右键-->New-->Directory,增加test目录
设置test为测试根目录
3.1.8 配置pom.xml
Pom中在项目生成之初默认Junit配置,除此之外还需要加入一些常用依赖,主要包含:
Springframework,mybatis,mysql,c3p0,jdbcdslog,dubbo,logback,lombok,log4j,dfs-client,zkclient等
详细dependency可见https://www.cnblogs.com/xiuxingzhe/p/9250786.html
3.1.9 配置文件新增
在src/resources目录下新增spring目录,新增application-context.xml配置文件
3.1.10 配置文件获取
配置项目启动需要加载的本地配置文件,配置文件中包含JDBC、zk等配置信息。该文件可以在对应应用的linux部署机器上找到,一般在/data目录下,不清楚的可以咨询开发同事
下载该文件至本地,然后在本地创建对应目录,要求必须和当前测试项目在相同磁盘下,文件名称则随意
详细配置可参考https://www.cnblogs.com/xiuxingzhe/p/9250825.html
3.1.11 配置web.xml
统一编码配置:UTF-8
配置监听器:ContextLoaderListener
指定加载项目配置文件路径和名称
详细配置可参考https://www.cnblogs.com/xiuxingzhe/p/9250808.html
3.1.12 Dubbo消费者配置
在src/spring/目录下创建dubbo-consumer.xml配置文件,并且在application-context.xml中加入导入dubbo-consumer.xml配置,如下图所示:
dubbo-consumer.xml配置详细可参考https://www.cnblogs.com/xiuxingzhe/p/9250829.html
3.1.13 logback.xml配置
logback.xml日志配置,详细可参考https://www.cnblogs.com/xiuxingzhe/p/9250832.html
3.1.14 配置bean目录
增加测试目录,配置自动注册bean目录
3.2 项目实战
3.1介绍了测试项目基本框架搭建,下面以ma-query中接口MaMemberManagerService的 Result<Boolean> insertMemberIndividual(MemberIndividualReqDTO
memberIndividualReqDTO)方法为例,说明具体的测试相关配置和方法
说明:下面是以dubbo类接口为例,读者可根据自己公司内部接口进行尝试。HTTP接口相对简单,可自行搜索研究,本文不做介绍,如有问题可联系笔者,联系微信:125270461
3.2.1 下载测试目标jar包
在pom.xml中增加ma-query项目依赖,maven会自动下载,确保下载成功
3.2.2 配置dubbo消费者
3.2.3 增加测试类
3.2.4 使用注解的方式加载配置文件
3.2.5创建测试方法并调用
3.2.6测试方法调试
执行测试方法,查看服务日志,能调通即OK
四、注意事项
4.1 Maven依赖配置
测试中碰到的maven依赖主要有两种:
4.1.1公共依赖
可在maven官方仓库中搜索,地址:http://mvnrepository.com/
如:需要spring-context,通过下图所示方法找到该依赖坐标后,拷贝至项目pom.xml中的<dependencies></dependencies>中即可
4.1.2测试依赖
如:ma-query项目对应接口的jar包或者相关联的jar包
① 开发接口文档中会包含依赖信息,如没有,可向对应开发咨询
② 获取对应依赖的坐标,一般去所在公司中央仓库中搜索
4.2配置文件加载
上文中使用注解方式注入bean,也可使用ApplicationContext,示例如下:
4.3配置文件加载优化
当同一个测试项目中需要添加多个测试应用时,可以抽象一个父类,在父类中加载配置文件,并且注入bean,其余测试类继承该父类,只负责具体的测试方法即可。具体如下:
02.基于IDEA+Spring+Maven搭建测试项目--详细过程的更多相关文章
- 01.基于IDEA+Spring+Maven搭建测试项目--综述
目前公司的测试工作中常见两种接口:HTTP和Dubbo,这两种接口类型均可以使用相关测试工具进行测试,但都会有一定的局限性和不便之处,具体如下: 1.HTTP接口,当需要对于参数进行加密解密时,就得对 ...
- 08.基于IDEA+Spring+Maven搭建测试项目--Maven的配置文件settings.xml
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://mav ...
- 07.基于IDEA+Spring+Maven搭建测试项目--logback.xml配置
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 控制台日志 ...
- 05.基于IDEA+Spring+Maven搭建测试项目--web.xml配置
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" " ...
- 03.基于IDEA+Spring+Maven搭建测试项目--常用dependency
<!--常用的依赖配置--> <!--未展示完整的pom.xml文件内容--> <properties> <java.version>1.8</j ...
- 06.基于IDEA+Spring+Maven搭建测试项目--dubbo-consumer.xml配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- 04.基于IDEA+Spring+Maven搭建测试项目--application-context.xml配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- 利用vue-cli3快速搭建vue项目详细过程
一.介绍 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统.有三个组件: CLI:@vue/cli 全局安装的 npm 包,提供了终端里的vue命令(如:vue create .vue ...
- Maven 搭建 SSM 项目 (oracle)
简单谈一下maven搭建 ssm 项目 (使用数据库oracle,比 mysql 难,所以这里谈一下) 在创建maven 的web项目时,常常会缺了main/java , main/test 两个文件 ...
随机推荐
- 使用efwplusScript开发Winform程序【像小程序那样开发PC软件】
一.前言 本人从事多年医疗管理软件的开发,在医院大多数的软件都还是CS程序,BS程序很少,对于使用者来说CS的操作体验确实比BS的要好. 1.CS的缺点就是升级麻烦,每次有新版本都需要所有客户端操作升 ...
- Redis源码阅读(五)集群-故障迁移(上)
Redis源码阅读(五)集群-故障迁移(上) 故障迁移是集群非常重要的功能:直白的说就是在集群中部分节点失效时,能将失效节点负责的键值对迁移到其他节点上,从而保证整个集群系统在部分节点失效后没有丢失数 ...
- React Native移动开发实战-4-Android平台的适配原理
打开Android开发工具Android Studio,选择菜单 Open an existing AndroidStudio project,打开ch04项目的android文件夹,如图5.8所示. ...
- 基于tensorflow实现mnist手写识别 (多层神经网络)
标题党其实也不多,一个输入层,三个隐藏层,一个输出层 老样子先上代码 导入mnist的路径很长,现在还记不住 import tensorflow as tf import tensorflow.exa ...
- Redis Jedis简介
Redis是一种基于内存类型的数据存储工具 Jedis是一个用java写的Redis数据库操作的客户端,通过Jedis,可以很方便的对redis数据库进行操作.Jedis通过Jedis Pool进行R ...
- Tomcat部署与使用
Tomcat简介 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun和其他一些公司及个人共同开发 ...
- LeetCode 404. Sum of Left Leaves (C++)
题目: Find the sum of all left leaves in a given binary tree. Example: 3 / \ 9 20 / \ 15 7 There are t ...
- check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc
往一个新建的MySQL表中插入数据报错 2018-08-22 14:09:18.875 ERROR 9256 --- [apr-8080-exec-9] o.s.b.w.servlet.support ...
- Daily Scrum3 11.5
昨天的任务已经完成,但是大家分析后发现进度稍有些慢.今天各自都在调整进度,不再拖延别人的工作. 今日任务: 杨伊:做问卷调查,准备用户体验篇内容. 徐钧鸿:把Xueba中Utility 向闸瓦移植 张 ...
- python service 服务没有及时响应启动或控制请求
1053错误 代码运行没有问题后,安装服务,然而start 的时候出现错误 1053:服务没有及时响应启动或控制请求(Error 1053: The service did not respond t ...