个人能进行网站开发,wordpress在线文件管理插件,科技背景图,鄂州网约车基于Spring开发的DUBBO服务接口测试 知识共享主要内容#xff1a; 1、 Dubbo相关概念和架构#xff0c;以及dubbo服务程序开发步骤。 2、 基于Spring开发框架的dubbo服务接口测试相关配置。 3、 spring testjunit和spring testTestNG两种测试框架脚本编写方法。 一、 … 基于Spring开发的DUBBO服务接口测试 知识共享主要内容 1、 Dubbo相关概念和架构以及dubbo服务程序开发步骤。 2、 基于Spring开发框架的dubbo服务接口测试相关配置。 3、 spring testjunit和spring testTestNG两种测试框架脚本编写方法。 一、 DUBBO与DUBBO架构 1、 什么是dubboDUBBO是一个分布式服务框架致力于提供高性能和透明化的RPC远程服务调用方案是阿里巴巴SOA服务化治理方案的核心框架每天为2,000个服务提供3,000,000,000次访问量支持并被广泛应用于阿里巴巴集团的各成员站点。 2、 DUBBO架构 二、 Dubbo服务程序开发过程(服务提供者服务消费者配置文件) 服务提供者1) 定义服务接口 2) 定义接口实现类 3) Spring配置声明暴露服务 4) 加载Spring配置 服务消费者5) Spring配置引用远程服务 6) 加载Spring配置并调用远程服务 u ClassPathXmlApplicationContext加载配置然后用getBean方法获取远程代理。 u 用IOC注入测试脚本是用这种方式的。 三、 Dubbo服务接口测试环境准备 1、 POM.xml引入对应service应用jar依赖。 比如 dependency groupIdcom.XXXX.basisdata/groupId artifactIdbasisdata-bankbill-common-facade/artifactId version1.1.0/version /dependency 2、 Dubbo服务spring配置 u 由于测试过程是远程调用接口的过程所以只需要进行消费方spring配置。 u 由于阿里云dubbo应用的测试环境属于外网本地机器需将请求通过公网机器的端口转发給测试环境需要在公网IPTable配置映射。 u 没有经过注册中心所以不用配置注册中心。 Spring-dubbo配置文件只需对每个service如下配置 dubbo:reference interfacecom.xxx.xxx.xxx.service.BillDetailService idbillDetailService urldubbo://121.43.177.8:20100 timeout10000/ 然后在spring-context.xml加入引入资源配置即可。 import resourcespring-secret.xml / 四、 脚本设计结构 创建测试类公共父类继承AbstractTestNGSpringContextTests或者AbstractJUnit4SpringContextTests。创建测试类继承父类编写相应代码。 五、 脚本两种基本编写方法 1、 继承AbstractJUnit4SpringContextTests方法。 RunWith(SpringJUnit4ClassRunner.class)ContextConfiguration(locations {classpath:/spring-context.xml})
Configurationpublic class BaseJunit4Test extends AbstractJUnit4SpringContextTests {
} 2、 继承AbstractTestNGSpringContextTests方法。 RunWith(SpringJUnit4ClassRunner.class) ContextConfiguration(locations {classpath:/spring-context.xml})
Configuration
public class BaseTestNGTest extends AbstractTestNGSpringContextTests {
} 测试类继承BaseTestNGTest即可。 六、 数据驱动两种基本编写方法 1、 基于Junit数据驱动。 u 父类配置 RunWith(Parameterized.class) ContextConfiguration(locations {classpath:/spring-context.xml}) Configuration public class BaseJunit4Test extends AbstractJUnit4SpringContextTests { protected TestContextManager testContextManager; Before public void setUpContext() throws Exception { this.testContextManager new TestContextManager(getClass()); this.testContextManager.prepareTestInstance(this); } }u 接口测试类需编写一个构造类和一个由Parameterized.Parameters参数数据方法 Parameterized.Parameters
public static CollectionInteger[] getTestParameters(){
//
// ListInteger[] list new ArrayListInteger[]();
// list.add(new Integer[]{2000998248}); //expected,valueOne,valueTwo
// list.add(new Integer[]{2000020021});
// list.add(new Integer[]{2001999335});
// String stlist.toString();
// System.out.println(list值 st);
// return list;
// }ListInteger[] list new ArrayListInteger[]();list Arrays.asList(new Integer[][]{{2000998248},{2000020021},{2001999335}});return list; } 构造方法public TestSelectListByUserId2(Integer userid){ this.testUser userid; }2、 基于TESTNG数据驱动。 u 父类配置 ContextConfiguration(locations {classpath:/spring-context.xml})
Configuration
public class BaseTestNGTest extends AbstractTestNGSpringContextTests{
} u 测试接口类需加一个由DataProvider(name 集合标识)注解的数据收集的方法并将Test(dataProvider集合标识)給需要用参数的测试方法。 数据收集方法 DataProvider(name testdata) public Object[][] dataprovide()throws IOException{System.out.println(dataprovide方法执行);
// return new Object[][]{{2000020013,2},{2001000138,0},{2001000139,2}};Object[][] testData ExcelHandle.readXlsx(excel, 工作表2);return testData;} u 测试方法 Test(dataProvidertestdata)public void test_case_1(HashMapString, String map) throws Exception {operatorUserIdInteger.valueOf(map.get(userId));exceptedvalue Integer.valueOf(map.get(excepted)); //实际值Integer actual_value billService.getUserEmailNameCount(operatorUserId);//预期值Integer excepted_value get_excepted_value(operatorUserId);//验证Assert.assertEquals(actual_value,exceptedvalue);} 转载于:https://www.cnblogs.com/ceshi2016/p/6527210.html