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端客户,对外提供的产品主要是接口,所以测试人员在测试过程中主要测试对象是接口。根据实际工作中所见,目前主要有两大类接口:

  1. 基于HTTP协议的接口,以对外提供给商户为主(会涉及到加密和解密)
  2. 基于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:UsersBF100400.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,其余测试类继承该父类,只负责具体的测试方法即可。具体如下:

 

 

原文地址:https://www.cnblogs.com/xiuxingzhe/p/9250737.html