动手写一个Remoting测试工具
来源:互联网 发布:hifi音响推荐 知乎 编辑:程序博客网 时间:2024/04/28 14:43
基于.NET开发分布式系统,经常用到Remoting技术。在测试驱动开发流行的今天,如果针对分布式系统中的每个Remoting接口的每个方法都要写详细的测试脚本,无疑非常浪费时间。所以,我想写一个能自动测试remoting接口的小工具InterfaceTester。而且,当分布式系统中的某个remoting接口出现bug时,该小工具可以提交需要模拟的数据,以便在调试remoting服务的环境中,快速定位和解决bug。
InterfaceTester运行起来后的效果如下图:
1.如何使用
(1)首先,填上要测试的并且是已经发布的Remoting服务的地址信息。
(2)选取要测试的remoting接口所在的程序集,一般是一个dll。选定程序集后,InterfaceTester会自动搜索该程序集中定义的所有接口,并将其绑定到“接口类型”的下拉列表。
(3)从 “接口类型”的下拉列表中选择要测试的接口。选定接口后,InterfaceTester会自动搜索该接口中定义的所有方法,并将其绑定到“目标方法”的下拉列表。
(4)从 “目标方法”的下拉列表中选择要测试的方法,InterfaceTester会根据该方法所要求的参数,自动生成参数录入界面。
(5)在参数录入界面上,输入用于测试的参数的值,然后,点击“调用”按钮, InterfaceTester便会调用上述指定地址的remtoing服务的指定接口的指定方法,如果调用的方法有返回值,则会在“调用返回”的panel上显示该值。如果返回的不是一个简单类型,而是一个对象,则“调用返回”的panel上将会以xml的形式显示这个对象的各个属性值。
2.实现原理
就这个小工具的实现而言,主要用到的技术就是反射(reflection)。另外,需要注意的就是,根据参数的类型,生成录入界面。具体细节大家可以参见源码。目前,InterfaceTester支持的被测试方法的参数类型是有限制的:
(1)支持简单的数据类型,像string、int、bool等。
(2)支持List<>、I List<>、IDictionary<,>、Dictionary<,>等集合类型。
(3)支持简单的数据结构的class(如像Point、自定义的Entity等)。
3.源码解决方案
下载源码并用VS打开后,解决方案下有三个项目:InterfaceTester、DemoInterface、DemoService。
(1)InterfaceTester项目是我们本文的主角:用于remoting接口测试的小工具。
(2)DemoInterface和 DemoService则是为了试试小工具而构建的一个小demo。 DemoInterface定义了发布的remoting服务的接口, DemoService则是发布的remoting服务。
在试用时,先启动 DemoService项目,再启动InterfaceTester,就可以试试我们的小工具功能了。
4.源码下载
InterfaceTester
针对这个remoting接口测试小工具,大家如果有什么好的建议,请留言告诉我:)
- 动手写一个Remoting测试工具
- 动手写一个"liveReload"
- 动手写一个轮播
- 动手写一个探测网络质量(丢包率/RTT/队形等)的工具
- 给初学者:用VB写外挂 ———— 实战一:动手写一个红色警戒金钱锁定工具
- 动手写一个用户注册协议倒计时
- Tomcat中动手写一个servlet
- 准备动手写一个博客网站了
- 第一个任务--动手写一个网页
- 动手写一个STM8的轻量级bootloader
- 分享一个自己写的httpWatch自动化测试工具
- 用python写的一个网页测试工具
- 写一个基于Servlet的接口测试工具
- 动手写了一个乒乓球积分排名表
- 动手写一个OpenVPN的wrapper来优化OpenVPN性能
- 学习较底层编程:动手写一个C语言编译器
- 学习较底层编程:动手写一个C语言编译器
- 学习较底层编程:动手写一个C语言编译器
- openfire编译
- 揭秘鲜为人知的酒店管理“黑洞”
- CLLocationManager定位经纬度,MKReverseGeocoder地址解析, MKMapView 地图显示 iphone
- Spring MVC源码分析(续)——请求处理
- MYSQL 语句 load data infile 用法
- 动手写一个Remoting测试工具
- UIcollectionView flowlayout 流式布局
- IMPDP ORA-06512
- 八皇后问题--递归算法
- 使用HPROSE 创建服务端、客户端简明教程
- unity 脚本生命周期
- Qt中 int ,float ,double转换为QString
- 求二维数组最大子数组和(或矩阵的最大子矩阵和)
- Oracle中wm_concat函数的使用