基于Spring开发的DUBBO服务接口测试
2017-03-09 19:01
387 查看
基于Spring开发的DUBBO服务接口测试
知识共享主要内容:1、Dubbo相关概念和架构,以及dubbo服务程序开发步骤。
2、基于Spring开发框架的dubbo服务接口测试相关配置。
3、springtest+junit和springtest+TestNG两种测试框架脚本编写方法。
一、DUBBO与DUBBO架构
1、什么是dubbo?DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。
2、DUBBO架构:
二、Dubbo服务程序开发过程(服务提供者,服务消费者,配置文件)
服务提供者:
1)定义服务接口
2)定义接口实现类
3)Spring配置声明暴露服务:
4)加载Spring配置
服务消费者:
5)Spring配置引用远程服务
6)加载Spring配置,并调用远程服务
uClassPathXmlApplicationContext加载配置,然后用getBean方法获取远程代理。
u用IOC注入:测试脚本是用这种方式的。
三、Dubbo服务接口测试环境准备
1、POM.xml引入对应service应用jar依赖。
比如:
dependency>
<groupId>com.datatrees.basisdata</groupId>
<artifactId>basisdata-bankbill-common-facade</artifactId>
<version>1.1.0</version>
</dependency>
2、Dubbo服务spring配置
u由于测试过程是远程调用接口的过程,所以只需要进行消费方spring配置。
u由于阿里云dubbo应用的测试环境属于外网,本地机器需将请求通过公网机器的端口转发給测试环境,需要在公网IPTable配置映射。
u没有经过注册中心,所以不用配置注册中心。
Spring-dubbo配置文件只需对每个service如下配置:
<dubbo:referenceinterface="com.datatrees.basisdata.bankbill.service.BillDetailService"id="billDetailService"url="dubbo://121.43.177.8:20100"timeout="10000"/>
然后在spring-context.xml加入引入资源配置即可。
<importresource="spring-secret.xml"/>
四、脚本设计结构:
创建测试类公共父类,继承AbstractTestNGSpringContextTests或者AbstractJUnit4SpringContextTests。
创建测试类,继承父类,编写相应代码。
五、脚本两种基本编写方法:
1、继承AbstractJUnit4SpringContextTests方法。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:/spring-context.xml"})
@Configuration
publicclassBaseJunit4TestextendsAbstractJUnit4SpringContextTests{
}
2、继承AbstractTestNGSpringContextTests方法。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:/spring-context.xml"})
@Configuration
publicclassBaseTestNGTestextendsAbstractTestNGSpringContextTests{
}
测试类继承BaseTestNGTest即可。
六、数据驱动两种基本编写方法:
1、基于Junit数据驱动。
u父类配置:
@RunWith(Parameterized.class)
@ContextConfiguration(locations={"classpath:/spring-context.xml"})
@Configuration
publicclassBaseJunit4TestextendsAbstractJUnit4SpringContextTests{
protectedTestContextManager
testContextManager;
@Before
publicvoidsetUpContext()throws
Exception{
this.testContextManager=new
TestContextManager(getClass());
this.testContextManager.prepareTestInstance(this);
}
}
u
@Parameterized.Parameters
publicstaticCollection<Integer[]>getTestParameters(){
//
//List<Integer[]>list=newArrayList<Integer[]>();
//list.add(newInteger[]{2000998248});//expected,valueOne,valueTwo
//list.add(newInteger[]{2000020021});
//list.add(newInteger[]{2001999335});
//Stringst=list.toString();
//System.out.println("list值:"+st);
//returnlist;
//}
List<Integer[]>list=newArrayList<Integer[]>();
list=Arrays.asList(newInteger[][]{{2000998248},{2000020021},{2001999335}});
returnlist;
}
构造方法:
publicTestSelectListByUserId2(Integeruserid){
this.testUser=userid;
}
2、基于TESTNG数据驱动。
u父类配置:
@ContextConfiguration(locations={"classpath:/spring-context.xml"})
@Configuration
publicclassBaseTestNGTestextendsAbstractTestNGSpringContextTests{
}
u测试接口类需加一个由@DataProvider(name="集合标识")注解的数据收集的方法,并将@Test(dataProvider="集合标识")給需要用参数的测试方法。
数据收集方法:
@DataProvider(name="testdata")
publicObject[][]dataprovide()throwsIOException{
System.out.println("dataprovide方法执行");
//returnnewObject[][]{{2000020013,2},{2001000138,0},{2001000139,2}};
Object[][]testData=ExcelHandle.readXlsx(excel,"工作表2");
returntestData;
}
u测试方法:
@Test(dataProvider="testdata")
publicvoidtest_case_1(HashMap<String,String>map)throwsException{
operatorUserId=Integer.valueOf(map.get("userId"));
exceptedvalue=Integer.valueOf(map.get("excepted"));
//++++++++++++++实际值+++++++++++++
Integeractual_value=
billService.getUserEmailNameCount(operatorUserId);
//预期值
Integerexcepted_value=get_excepted_value(operatorUserId);
//++++++++++++++验证+++++++++++++
Assert.assertEquals(actual_value,exceptedvalue);
}
相关文章推荐
- 基于Spring开发的DUBBO服务接口测试
- 基于 Spring + Dubbo 开发分布式REST服务实战
- 基于 Spring + Dubbo 开发分布式REST服务实战
- 企业级后台接口开发。环境基于spring+springboot+springmvc+mybatis。测试 junit4
- RESTLET开发实例(三)基于spring的REST服务
- RESTLET开发实例(三)基于spring的REST服务
- 【Dubbo实战】 Dubbo+Zookeeper+Spring整合应用篇-Dubbo基于Zookeeper实现分布式服务(二)
- Spring+Struts2+Dubbo框架下使用webservice接口服务
- 基于Swagger接口,使用nodejs开发微服务的步骤
- 【Dubbo实战】 Dubbo+Zookeeper+Spring整合应用篇-Dubbo基于Zookeeper实现分布式服务(二)
- Yii2 基于RESTful架构的 advanced版API接口开发 配置、实现、测试
- [转贴]JAVA:RESTLET开发实例(三)基于spring的REST服务
- 开发基于接口的 .net web 服务
- Yii2 基于RESTful架构的 advanced版API接口开发 配置、实现、测试 (转)
- Yii2 基于RESTful架构的 advanced版API接口开发 配置、实现、测试
- 【JEECG Dubbo专题】Dubbo+Zookeeper+Spring整合应用篇-Dubbo基于Zookeeper实现分布式服务(二)
- 【Dubbo实战】 Dubbo+Zookeeper+Spring整合应用篇-Dubbo基于Zookeeper实现分布式服务(二)
- 了解如何设计和开发基于Http请求的数据接口服务系统
- 【Dubbo实战】 Dubbo+Zookeeper+Spring整合应用篇-Dubbo基于Zookeeper实现分布式服务(转)
- Dubbo+Zookeeper+Spring整合应用篇-Dubbo基于Zookeeper实现分布式服务